4

便宜上、スクリプトを次に示します。

" Uncomment the following to have Vim jump to the last position when                                                       
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

この機能は優れていますが、Vim がエディターとして呼び出される特定のケースでは使用できません。たとえば、2 行の git コミット メッセージを書くことが多いので、次にコミットすると 2 行目に落ちてしまい、これに合わせて調整する必要があります。 .

同様に、他の多くのシステムでは、ファイルの編集を伴うプロセスの一部として Vim をエディターとして使用するように指定できます。

これを検出して、last-position-jump スクリプトを変更するにはどうすればよいでしょうか? Git は、コミット間で同じままのファイルを使用するため、実際には特別なもの.git/COMMIT_EDITMSGです。これが、これが起こっている理由です。一時ファイルでは、Vim が以前に見たことのないファイルでは発生しません。

これにより、おそらくタスクはほとんど簡単になります(現在のファイル== COMMIT_EDITMSG...のチェックでスクリプトを強化します)

しかし、本当に完璧な答えは、Vim がコマンド ラインから呼び出されたのか、それともスクリプトによって開かれたのかを検出できるかどうかです。伝える方法はありますか?UNIXプログラムは、用語/疑似用語で実行されているかどうかを判断できることを知っていますが、どちらの方法でも端末から入力を受け取ることになります。

4

3 に答える 3

2

Git コミット メッセージには filetype がありgitcommitます。

gitcommit最後の位置にいつジャンプするかを決定するために、ファイルがファイルタイプでないかどうかを確認するチェックを追加するだけです。

if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") && &filetype != "gitcommit"
    \| exe "normal! g'\"" | endif
endif
于 2013-05-24T05:12:16.293 に答える