2011-10-25 14 views
16

VIMを終了して同じファイルを再び開くと、ファイルの先頭に配置されます。最後のカーソル位置を保持するにはどうすればよいですか?VIMの最後の編集位置を保持

+0

[あなたがファイルを最後に編集したときにVimがあなたを元に戻す方法を教えてください](http://stackoverflow.com/questions/1682536/how-do-you-make-vim-take -you-back-where-you-were-last-edited-a-file) – mloskot

+0

:help viminfoが必要な情報を教えてください –

答えて

21

「ボックスのうち」.vimrcは声明でこれを可能にします:

source $VIMRUNTIME/vimrc_example.vim 

あなたは自分の.vimrcでこの文を復元する必要があるかもしれません。いずれにしても、vimrc_example.vimを参照し、line()ファンクションin the Vim manualを参照してください。

+0

それはMac OS Xで私のために働いた。私はファイルchmod 600をcpし、人生は壮大でした。 – tggagne

0

:mksコマンド(make session)を試すことができます。 vimを実行すると、開いているすべてのファイルとカーソルの位置を含め、現在の編集セッションを復元するスクリプトファイルが保存されます。

+0

ローカルディレクトリにSession.vimファイルを作成します。これは私が望んでいたものではありません。私は今vimが自動的に編集位置を保存し、同じファイルが開かれたときに復元することができます。私はちょうど方法を知らない。 –

10

(私は作者午前)プラグインがありhttp://amix.dk/vim/vimrc.html

" Return to last edit position when opening files (You want this!) 
autocmd BufReadPost * 
    \ if line("'\"") > 0 && line("'\"") <= line("$") | 
    \ exe "normal! g`\"" | 
    \ endif 
+0

ここで 'if'文が何をしているのか説明できますか?私は "カーソルが最初の行の前または最後の行の前にある場合にのみカーソルを復元する"と読んでいますが、それがどのような違いがあるのか​​はわかりません。私は現在、 'autocmd BufReadPost * normalを追加しました!私のvimrcにg \ '" zv "してもうまくいくようですが、無条件マーク復元の潜在的な落とし穴を理解していないと思います。 – robru

+1

ああ、ファイルがvimの外側で切り捨てられ、vimのマークがライン上にあるvimはエラーをスローします。それを 'autocmd BufReadPost * silent!normal!g \' "zv'で修正しました – robru

4

から撮影をインテリジェントにあなたが作った最後の編集に戻りますvim-lastplaceと呼ばれます。

また、特定のファイルタイプを無視する設定オプションもあります。デフォルトでは、git、svn、およびmercurialのコミットメッセージは無視されます。これらのファイルタイプでは、最初の行でカーソルを開始します。上記のコードスニペットは、コミットメッセージファイルの途中にジャンプします(前のコミットで中断した場所)。これはおそらくあなたが望むものではありません。 vim-lastplaceはこの問題を修正します。

5

最後の編集位置はVimによって自動的に保持され、「特別な」ジャンプマーク.として利用できます。その他の特別なマークには"(保存場所)と'(ポジションはからにジャンプしました)あなたは'<mark>を入力してマークにジャンプすることができます

が、そう'.が最後の編集の場所に行くことができます、''はあなたがいた場所に戻って行くことができます、と'"はあなたのファイルを保存した位置に移動します。

それ以上のVimマークについてはVim.Wikiaです。

関連する問題