16

次のコードを .vimrc に追加しました。

" save and restore folds when a file is closed and re-opened
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent loadview 

HTML および CSS ドキュメントは折り畳みを保存および復元しますが、コードの折り畳みが.vimrcに保存されません

助言がありますか?

編集:

次のコードは問題を解決します。

au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview

しかし、私がそれを書くと、MRU ファイルはリストから消えます (そして、最近のファイルのリストを見るために MRU を 2 回開かなければならないのはなぜですか?)

4

6 に答える 6

15

問題は、元のautocmd行がパターンに一致するように設定されていることです*.*。つまり、いくつかの文字を含み、その後にドットが続き、さらにいくつかの文字が続くファイル名です。

したがって、ファイルtest.htmloranothertest.cssは一致し、コマンドは実行されますが.vimrc、ドットの前に何もない は一致しません。

解決策は、一致する autocmd を設定することです.vimrc。あなたの推測は?*これと一致します (任意の文字の後に任意の数の他の文字が続くため)、MRU に何らかの影響を与えるとあなたは言います。MRU に使用しているプラ​​グインはわかりませんが、?* パターンに一致する名前の一時ウィンドウで MRU リストを開くプラグインであり、その後のビューの読み込みは何らかの形で行われると思います。あなたのMRUをいじります。

したがって、修正は、.vimrc に一致するようにもう少し具体的なものを使用することです。

autocmd BufWinLeave .vimrc mkview
autocmd BufWinEnter .vimrc silent loadview 

これも機能する可能性があり、より一般的です。

autocmd BufWinLeave .* mkview
autocmd BufWinEnter .* silent loadview 
于 2010-05-26T12:29:33.170 に答える
9

Jays のコメントによると、これは最も洗練されたソリューションです。私はたくさんのプラグインを持っており、複数の OS で実行し、テストしたばかりです。

autocmd BufWrite * mkview
autocmd BufRead * silent loadview

MRU を壊したり、MRU を二重に照会する必要が生じたりすることはありません。空のバッファーに :new を実行してもエラーにはなりません。また、使用する可能性のあるすべてのファイル タイプに対して FileType パターンを作成する必要もありません。

注: "BufNewFile" で "loadview" を使用すると、MRU が混乱するように見えます。

于 2011-04-26T16:42:10.747 に答える
2

同様の問題がありました。おそらく、データを保持するディレクトリを作成する必要があります。

mkdir -p ~/.vim/view
chmod 0750 ~/.vim ~/.vim/view
于 2010-01-26T20:37:05.707 に答える
1

これをvimrcの先頭に追加して、viewdirが存在することを確認します

let &viewdir=expand("$HOME") . "/.bk/.vim/viewdir"
if !isdirectory(expand(&viewdir))|call mkdir(expand(&viewdir), "p", 451)|endif

次に、autocmds セクションで次のようにします。

autocmd BufWrite * mkview
autocmd BufNewFile,BufRead * silent loadview
于 2012-03-27T08:20:11.160 に答える
0

ビューの詳細は、ディレクトリ内のビュー ファイルに保存されますvimfiles\view。編集するファイルごとに個別のビュー ファイルが作成されます。

于 2010-01-26T20:32:45.630 に答える