web-dev-qa-db-ja.com

Vimの永続的なアンドゥを使用していますか?

Vim 7.3の新機能の1つは「永続的アンドゥ」です。これにより、バッファーを終了するときにアンドゥツリーをファイルに保存できます。

残念ながら、私はそれを適切に有効にすることができなかったか、間違って使用しているに違いありません。これまでに試したことは次のとおりです。

以下を〜/ .vimrcに追加しました

set undofile                " Save undos after file closes
set undodir=$HOME/.vim/undo " where to save undo histories
set undolevels=1000         " How many undos
set undoreload=10000        " number of lines to save for undo

この後、ファイルを開いて編集し、保存して閉じることができるはずです。もう一度開くと、元に戻らないように元に戻す/やり直すことができるはずです。残念ながら、これは事実ではないようです。undofileが書き込まれることはありません。

ノート:

  1. 私はWin 7で、VimのクリームなしプロジェクトからVim 7.3を使用しています。永続的な取り消しはベイクインされます。

  2. $ HOME/.vim/undoがファイルシステムに存在します

91
duckworthd

これを.vimrc存在しない場合はundodirを作成し、永続的な取り消しを有効にします。 WindowsとLinuxの両方でテスト済み。

" Put plugins and dictionaries in this dir (also on Windows)
let vimDir = '$HOME/.vim'
let &runtimepath.=','.vimDir

" Keep undo history across sessions by storing it in a file
if has('persistent_undo')
    let myUndoDir = expand(vimDir . '/undodir')
    " Create dirs
    call system('mkdir ' . vimDir)
    call system('mkdir ' . myUndoDir)
    let &undodir = myUndoDir
    set undofile
endif
44
Matthias Braun

私は_gvimrcでこれを試しました:

" Persistent undo
try 
    set undodir=C:\vim\undodir
    set undofile
catch
endtry

Try-catchブラケットを削除すると、宣伝どおりに機能し始めました。したがって、

" Persistent undo
set undodir=C:\vim\undodir
set undofile

ディレクトリを作成する必要がありました。

8
Juan Lanus

$ HOMEが宣伝どおりに機能しないと思います。

私のシステムでは、:echo $HOMEはH:\を表示しますが、: e $HOME/言う:~/無効なファイル名。

絶対パスで試してみて、それが治癒するかどうかを確認する

3
sehe

これは期待どおりに動作するようになりました:file.txt Windows 7のVim 7.4バッファーで開く:setlocal undofile、その後、バッファへの変更を保存し、取り消しファイル.file.txt.un~は、:set undodir?は、「undodir =」と報告します。デフォルトでは-つまり、これを手動で指定する必要はありません。あなたもすることができます :set undofileモードラインで。

1
JosephHarriott