2

vimrc で次のコマンドを使用して、保存時に自動コミットします。これはとても便利だと思います。ただし、毎回同じコミット メッセージが表示されるのは好きではありません。

autocmd BufWritePost * execute ':silent ! if git rev-parse --git-dir > /dev/null 2>&1 ; then git add % ; git commit -m "Auto-commit: saved %"; fi > /dev/null 2>&1'

私が望むのは、保存時にプロンプ​​トを受け取り、コミットメッセージを提供するか、Enter キーを押して、急いでいるときにデフォルトとして「自動コミット: 保存された %」を使用できるようにすることです。

私はこの特定のコマンドで遊んでいましたinput()が、運がありませんでした。

また、関数によって返された値を使用しようとしましたが、それも機能しませんでした。

4

1 に答える 1

3

input()組み込み関数の場合、その結果を変数に代入し、(適切なエスケープを使用して) その内容を外部シェル コマンドに挿入できます。

autocmd BufWritePost * let message = input('Message? ', 'Auto-commit: saved ' . expand('%')) | execute ':silent ! if git rev-parse --git-dir > /dev/null 2>&1 ; then git add % ; git commit -m ' . shellescape(message, 1) . '; fi > /dev/null 2>&1'

これは、保存するたびにクエリを実行します。条件を追加すると、メッセージが与えられないときにコミットを中止することができます。

于 2013-11-03T07:16:49.913 に答える