回答:
Peter Rinckerが指摘するように、cmap
sは他の場所でも拡張できるので、aのcnoreabbrev
方が良いでしょう。
cnoreabbrev w' w
または、ピーターのおかげで、最も安全です。
cnoreabbrev <expr> w' getcmdtype() == ":" && getcmdline() == "w'" ? "w" : "w'"
コマンドラインにのみが含まれているかどうかを明示的にチェックするw'
ことで、状況での不要な展開を回避できます。
あなたは使うことができますcmap
:
cmap w' w
それでもを押す必要がありますEnterが、今は偶然'
を無視する必要があります。
を使用しているcmdwin
場合、inoremap
set by autocmd
が役立ちます。
autocmd CmdwinEnter * inoremap w' w
autocmd CmdwinLeave * iunmap w'
:cmap w' w
たが、行動に変化はなかった。 :w'
それでも、という名前のファイルに書き込みます'
。"'" [New] 0L, 0C written
。
'
押した後に実際に表示されますw
か?cmap
が正常に作成された場合は表示されません。cmapのLHSにはRHSが自動的に入力されるため、aを押すと'
、表示されるだけですw
。
cmap
さんとcabbrev
さん。それらは他のモードや他の場所で実行/拡張されます。例:s/'follow'/foo
と/'follow'
。保存して終了する代わりにバッファを削除するか、cmdalias.vimを
cnoreabbrev <expr> w' getcmdtype() == ":" && getcmdline() == "w'" ? "w" : "w'"
'
それでも表示されますが、コマンドを入力するためにcmdwinを使用しているためであることがわかりました。cmdwinは通常のバッファなので、そこでcmap/cnoreabbrev
作業しないでください。noreabbrev
cmdwinユーザー向けのオプションを使用して回答を更新します。:)ありがとう!!!
この方法は私にとってはうまくいきます:
:ca w' w
または、Escキーを2回押したときに現在のバッファーを保存するようにvimを設定することもできます。
:map <Esc><Esc> :w<CR>
または、次のマッピングを使用して、Ctrl+ sまたはF2:でファイルを保存します。
nmap <c-s> :w<CR>
vmap <c-s> <Esc><c-s>gv
imap <c-s> <Esc><c-s>
nmap <F2> :update<CR>
vmap <F2> <Esc><F2>gv
imap <F2> <c-o><F2>
注:F2は必要に応じてのみ保存し、必要に応じてユーザーを挿入モードに戻します(または視覚的な選択を復元します)。
ソース:vim wikiaでのファイルの保存
または、次の代替手段を使用します。
:up
(:update
):w
:q
:wq
か:x
:w'
、ではありません:w
。:w
誤ってヒットすることなく使用したいのです'
が、ファイルを書き込む必要がありますrm \'
。ただし、良いヒントです。