2017-10-29 4 views
2

こんにちは。Vim - 変更されたバッファが書き込まれたときにコマンドを実行します。

:wでバッファを書き込むときにコマンドを実行しようとしています。 しかし、このコマンドは、バッファの内容を変更した場合にのみ実行する必要があります。

私は多分、このように気にいらを考えた:

autocmd BufWritePost * if modified | echo 'execute command' | endif 

私はそれを行う方法を?

編集:

私は前に解決

autocmd BufWritePre * if &modified | echo 'execute command' | endif 

がApperently私は '&' なしに変更さ書くことができないことを発見しました。

+0

多くのユーザーがこれに似たマッピングを持っています。メッセージはそれのために見えません。コマンドは引き続き実行されます。 –

答えて

1

既に知っているように、バッファローカル'modified'フラグをチェックすることができます。構文については、&をオプション名の前に付ける必要があります。

:writeの代わりに:updateコマンドを使用すると、実際の変更があった場合にのみバッファが永続化され(自動起動されます)、変更されていないバッファの場合、このコマンドはno-opです。 command'`は `かくかくしかじかwritten`のようなものが直後に来る、次のエコーが、何かを出力します実行`エコー」ところで

nnoremap <C-S>  :<C-U>update<CR> 
vnoremap <C-S>  :<C-U>update<CR>gv 
inoremap <C-S>  <C-O>:update<CR> 
関連する問題