機能させるには、略語を空白で区切る必要があります。たとえば、私が持っているiab fo FOOBAR
場合、タイプしwhatfo
ても省略形はトリガーされません。これにはいくつかの明らかな賢明な理由があります。
ただし、iabをトリガーしてから戻ってスペースを削除しなくても、接尾辞として使用できる略語が必要です。これは可能ですか?例えば、iab fo <backspace>FOOBAR
。
機能させるには、略語を空白で区切る必要があります。たとえば、私が持っているiab fo FOOBAR
場合、タイプしwhatfo
ても省略形はトリガーされません。これにはいくつかの明らかな賢明な理由があります。
ただし、iabをトリガーしてから戻ってスペースを削除しなくても、接尾辞として使用できる略語が必要です。これは可能ですか?例えば、iab fo <backspace>FOOBAR
。
回答:
あなたはあなたのvimrcの中に書くことができます: iab fo <BS>FOOBAR
<BS>
バックスペースキーに使用する表記です。
特別なキー名の詳細については、以下を参照してください。
:help key-notation
[7:0]
の数b
などをいじってカスタマイズする必要があると思います。
b
とe
してB
とE
十分だろう。しかし、それが失敗する他のケースがあるかもしれません、私は知りません。いずれにせよ、最初のバージョンはほとんどの場合うまくいくはずです。
iab fo <BS>foobar
で十分でした。ご不便をおかけして申し訳ございませんが、@ djjcastの答えを正解としてください。現在のところ、回答を削除することはできませんが、削除できると削除できます。本当に申し訳ありませんが、私は略語に慣れていません。
<BS>
だけでした。私はそのようなことを試したと誓いますが、すべての制御文字を知っているわけではないので、私は<backspace>
何かを使用した可能性があります。
:help key-notation
挿入モードで押すだけですCtrl]。これにより、スペースを入力せずに略語が展開されます。
X(FOOBAR)
ではありませんX( FOOBAR
。Ctrl-]を使用すると、末尾のスペースが削除されます。私は略語を使用できるようにする必要があります- これは起動する最初の空白にも依存します -しかし、それを前の単語と連結させます(これは「サフィックス」が意味することです)。
${1}FOOBAR
-それは良い答えです。これを変更したい場合:/または別の回答を追加します。
別の方法として、以下は、どこにでも展開される略語を定義および展開する方法です。
let s:anywhere_abbreviations = {
\ 'fo': 'FOOBAR',
\ 'ab': 'ABBREVIATION',
\ }
function! s:MaybeExpandAbbreviation(trigger)
for key in keys(s:anywhere_abbreviations)
if matchstr(getline('.'), repeat('.', strchars(key)) . '\%' . col('.') . 'c') ==# key
return repeat("\<BS>", strchars(key)) . s:anywhere_abbreviations[key] . a:trigger
endif
endfor
return "\<C-]>" . a:trigger
endfunction
inoremap <expr> <Space> <SID>MaybeExpandAbbreviation("\<Space>")
どこかに展開する必要がある略語をs:anywhere_abbreviations
辞書に追加するだけです。このs:MaybeExpandAbbreviation()
関数は、トリガーキーが押されたときに略語の一致を検索して展開します- <Space>
「anywhere abbreviations」の展開をトリガーするためにマップされます。
上記のs:anywhere_abbreviations
辞書では、タイピングwhatfo<Space>
はに展開されwhatFOOBAR
ます。
これから出てきた最も単純な2つの答えを要約すると:
バックスペースは省略形で直接使用できます:help keycodes
。さまざまな特殊文字がに記載されています。したがって、たとえば:
:iab cdt <BS>cedental
入力trans cdt
して取得できますtranscendental
。
何年も使用して以来、特に恥ずかしいのですが、共通のsnipMateプラグインを使用すると、パラメーターを前に置くことができます。
snippet cdt
${1}cendental ${2}
タイピングを可能にしcdt
、Tabに拡大するcendental
と、あなたが入力できるように、前にカーソルを置きtrans
、その後、ヒットTab次の単語の先頭に移動し、再び。