web-dev-qa-db-fra.com

Vous utilisez l'annulation persistante de Vim?

L'une des nouvelles fonctionnalités de Vim 7.3 est l '"annulation persistante", qui permet d'enregistrer le nonotree dans un fichier lors de la sortie d'un tampon.

Malheureusement, je n'ai pas tout à fait réussi à l'activer correctement, ou je dois l'utiliser incorrectement. Voici ce que j'ai essayé jusqu'à présent:

J'ai ajouté ce qui suit à ~/.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

Après cela, je devrais pouvoir ouvrir n'importe quel fichier, le modifier, puis l'enregistrer-fermer, et quand je l'ouvrirai à nouveau, je devrais pouvoir annuler/refaire comme si je ne l'avais jamais quitté. Malheureusement, cela ne semble pas être le cas, car aucun undofile n'est jamais écrit.

Remarques:

  1. Je suis sur Win 7 en utilisant Vim 7.3 du projet Vim without cream. L'annulation persistante est intégrée.

  2. $ HOME/.vim/undo existe sur mon système de fichiers

91
duckworthd

Mettez ceci dans votre .vimrc pour créer un undodir s'il n'existe pas et activer l'annulation persistante. Testé sur Windows et 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

J'ai essayé ceci dans mon _gvimrc:

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

Il a commencé à fonctionner comme annoncé lorsque j'ai supprimé le support try-catch, ainsi:

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

J'ai dû créer le répertoire.

8
Juan Lanus

Je suppose que $ HOME ne fonctionne pas comme annoncé.

Sur mon système, :echo $HOME affiche H: \, mais : e $HOME/ dit: ~/ nom de fichier non valide.

Vous pouvez essayer avec un chemin absolu pour voir s'il guérit

3
sehe

Cela fonctionne maintenant comme prévu: file.txt ouvert dans un tampon Vim 7.4 sous Windows 7, :setlocal undofile, puis enregistrez une modification dans le tampon et le undofile .file.txt.un~ est créé à côté parce que :set undodir? signale que "undodir =." par défaut - c'est-à-dire pas besoin de le spécifier manuellement. Vous pouvez aussi :set undofile dans une modeline.

1
JosephHarriott