1. 困った状況
Vim でファイルを編集した後に、sudo で開いていないことに気付いた場合の対処法です。
(sudo を使わないと、そのファイルを上書きする権限がない状況)
2. 対応方法
Vim 内で以下のコマンドを実行します。
:w !sudo tee % > /dev/null
文字列 | 意味 |
---|---|
:w |
|
! |
vim のコマンドライン上で、外部のコマンドを実行するには、頭に「!」が必要 |
sudo |
sudo コマンド |
tee |
|
% |
カレントファイル |
> /dev/null |
tee は受け取ったデータを標準出力にも出力するが、それは必要ないので /dev/null に向けて捨てている。 |
すると以下のようなメッセージが表示されます。
ここに表示されている通り、すでにファイルは上書きされていますので、[OK] という意味で O キーを押しましょう。
この時点で、「どこか変更した」ことを示す [+] が表示されていますが、これは無視します。ちゃんと変更点は上書きされているはずです。
あとは、以下のコマンドで強制的に Vim を終了します。
:q!
3. ~/.vimrc にキーマップを登録する
~/.vimrc
ファイルに以下を記述すると、先程のコマンドを :w!!
というキーにマッピングすることができます。
cmap w!! w !sudo tee > /dev/null %