2

挿入モードでは、コマンド CTRL-] は、スペースを入力せずに略語を展開します。したがって、 を設定すると:abbrev foo bar、入力foo<C-]>は に変わりfooますbar

bar<C-]>しかし、省略形を設定していないときに入力するとどうなるbarでしょうか。vim の 1 つのバージョン (7.3.754) では、CTRL-] は無視されます。私がアクセスできる他のバージョン (7.3.0 および 7.2.411) では、リテラル文字^]が挿入されるため、bar^].

これは修正されたバグですか?それとも、コンパイルオプションが異なるため、処理が異なるのでしょうか? ^]また、これらの古い vim で作業する必要があるときに無関係な s を挿入しないようにする方法はありますか?

4

1 に答える 1

1

コメントで説明されているように、動作は7.3.489で変更され、マッピングを介して挿入された<C-]>場合に略語を展開できないという関連するバグが修正されました。<C-]>

面白いことに、これに遭遇した理由は、マッピングを定義していたからです

inoremap <CR> <C-]><CR><C-U>g

<CR>最後の 3 文字は、挿入モードで押すたびに新しい元に戻すポイントを作成するだけです。通常の状況では、Enter キーを押すと、該当する場合は省略形も展開<CR>されますが、再マップされている場合は展開されません。<C-]>略語を強制的に展開することでした。これは、Yichao Zhou が上記のバグ修正を作成した正確なマッピングであることが判明しました。

これは完全な回避策ではありませんがif has("patch489")、マップを定義するときに を使用することで、少なくとも古いバージョンの vim に適切に低下させることができます。Enter を押しても略語は展開されませんが、少なくとも挿入されません<C-]>

于 2013-04-12T22:06:22.797 に答える