0

これは、ホスト ファイルを新しいタブで開くためのキー マッピングです。

nnoremap <Leader>hs :tabe /etc/hosts<cr>:set noreadonly<cr>

これで、Vim は readonly について私を悩ませなくなりました。これは素晴らしいことです。ただし、セーブすると強制的にヒットする場合があります⌘</kbd>s or :w. I would like to overwrite both (are they the same?) calls to call our normal NVW (nasty Vim way) to write as sudo:

:w !sudo tee % >/dev/null<cr>

しかし、hosts ファイルのように、この current buffer に対してのみこれを行いたいと思います。いくつかのsetlocal魔法?

4

1 に答える 1

0

コマンドを使用しているため、macvimを想定しています。<D-S>が と同じことをするとは思えませんが、確かな:wことはわかりません。必要に応じて、バッファー ローカル マッピングを使用するようにマップできる場合があります。

autocmd BufRead /etc/hosts nnoremap <buffer> <D-s> :w !sudo tee % >/dev/null<cr>

ただし、最初にメニューからマップを解除する必要があります。gvimrc でこれに沿ったものを使用します。

macmenu File.Save key=<nop>

そして、保存のデフォルトの動作を追加します。バッファのローカル マッピングが優先されます。

nnoremap <D-s> :w<CR>

Zyx's Answer on Aliasing a command in Vim に:wある手法を使用してオーバーライドできます。それがオンラインの唯一のものである場合、これはに置き換えられます。:w:w !sudo tee % >/dev/null

autocmd BufRead /etc/hosts cnoreabbrev <buffer> <expr> w ((getcmdtype() is# ':' && getcmdline() is# 'w')?('w !sudo tee % >/dev/null'):('w'))
于 2014-08-02T23:59:34.617 に答える