`:w'`を`:w`にエイリアスして、 'という名前のファイルを作成しないようにする方法はありますか?


9

たまに、私の小指が'エンターに到達するまでキーをかすめるため、が発生し:w'<Enter>ます。

私はもう試した:

cabbrev w' :w
cabbrev w\' :w
cabbrev "w'" :w

それらのどれも動作しません。エイリアスする方法がある:w'のでは:w

また、通常のコマンドラインの代わりにcmdwin(:help cmdwin+ nnoremap : :<C-F>)を使用しているので、そこでも機能する場合はボーナスポイントになります。


3
ああ 私は同じ問題を抱えています
マルティントゥルノイイ2015

回答:


8

Peter Rinckerが指摘するように、cmapsは他の場所でも拡張できるので、aのcnoreabbrev方が良いでしょう

cnoreabbrev w' w

または、ピーターのおかげで、最も安全です。

cnoreabbrev <expr> w' getcmdtype() == ":" && getcmdline() == "w'" ? "w" : "w'"

コマンドラインにのみが含まれているかどうかを明示的にチェックするw'ことで、状況での不要な展開を回避できます。

あなたは使うことができますcmap

cmap w' w

それでもを押す必要がありますEnterが、今は偶然'を無視する必要があります。

を使用しているcmdwin場合、inoremapset by autocmdが役立ちます。

autocmd CmdwinEnter * inoremap w' w
autocmd CmdwinLeave * iunmap w'

私は走っ:cmap w' wたが、行動に変化はなかった。 :w'それでも、という名前のファイルに書き込みます'"'" [New] 0L, 0C written
mwcz

@mwcz '押した後に実際に表示されますwか?cmapが正常に作成された場合は表示されません。cmapのLHSにはRHSが自動的に入力されるため、aを押すと'、表示されるだけですw
muru、2015

1
裸に注意してくださいcmapさんとcabbrevさん。それらは他のモードや他の場所で実行/拡張されます。例:s/'follow'/foo/'follow'保存して終了する代わりにバッファを削除するか、cmdalias.vimを
Peter Rincker

1
申し訳ありませんが安全です:cnoreabbrev <expr> w' getcmdtype() == ":" && getcmdline() == "w'" ? "w" : "w'"
Peter Rincker、2015

はい、'それでも表示されますが、コマンドを入力するためにcmdwinを使用しているためであることがわかりました。cmdwinは通常のバッファなので、そこでcmap/cnoreabbrev作業しないでください。noreabbrevcmdwinユーザー向けのオプションを使用して回答を更新します。:)ありがとう!!!
mwcz

0

この方法は私にとってはうまくいきます:

: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
  • ZQ ために :q
  • ZZ以下のため:wq:x

質問の引用符に注意してください。 :w'、ではありません:w:w誤ってヒットすることなく使用したいのです'が、ファイルを書き込む必要がありますrm \'。ただし、良いヒントです。
mwcz 2015

1
Ctrl-Sはsigstopを送信しません-プログラムが停止する場合、それはおそらくバッファがいっぱいだったためです。参照してくださいunix.stackexchange.com/questions/13629/... "
muru
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.