Question

Est-il possible de changer la façon dont les noms Vim son swap / sauvegarde / undo fichiers?

Pour éviter l'encombrement, j'ai options définies dans mon ~/.vimrc pour vider ces fichiers dans ~/.vim/tmp/{swap,backup,undo}; Cependant, comme je diffuse régulièrement modifier des fichiers dans des répertoires différents avec le même nom, je finissent souvent avec beaucoup de fichiers autrement impossibles à distinguer et Vim a parfois du mal à récupérer.

Idéalement, je voudrais utiliser le schéma de nommage que la undo persistante a (%path%to%file.undo) pour tous ces fichiers auxiliaires; il n'y a aucun moyen évident de le mettre, mais qu'il peut être fait avec des macros Buf{Read,Write}?

Était-ce utile?

La solution

J'ai dans mon .vimrc et les noms des fichiers d'échange avec des signes noms de chemin complet et pour cent comme vous le décrire:

" Store swap files in fixed location, not current directory.
set dir=~/.vimswap//,/var/tmp//,/tmp//,.

La clé est la // à la fin des répertoires. Voir cette note de :help dir:

  
      
  • Pour Unix et Win32, si un répertoire se termine dans deux chemins de la "//"         ou "\\", le nom du fichier d'échange sera construit à partir du chemin complet         le fichier avec tous les séparateurs de chemin substitués à des signes « % » pour cent.         Cela permettra d'assurer l'unicité du nom de fichier dans le répertoire conserver.
  •   

Autres conseils

Voici la part de mon .vimrc de github .

Ceci définit la undodir (et se retourne sur), définit la backupdir et directory (utilisé pour les fichiers de .swp). Notez qu'il crée les répertoires si elles ne sont pas déjà.

" Save your backup files to a less annoying place than the current directory.
" If you have .vim-backup in the current directory, it'll use that.
" Otherwise it saves it to ~/.vim/backup or .
if isdirectory($HOME . '/.vim/backup') == 0
  :silent !mkdir -p ~/.vim/backup >/dev/null 2>&1
endif
set backupdir-=.
set backupdir+=.
set backupdir-=~/
set backupdir^=~/.vim/backup/
set backupdir^=./.vim-backup/
set backup

" Save your swap files to a less annoying place than the current directory.
" If you have .vim-swap in the current directory, it'll use that.
" Otherwise it saves it to ~/.vim/swap, ~/tmp or .
if isdirectory($HOME . '/.vim/swap') == 0
  :silent !mkdir -p ~/.vim/swap >/dev/null 2>&1
endif
set directory=./.vim-swap//
set directory+=~/.vim/swap//
set directory+=~/tmp//
set directory+=.

" viminfo stores the the state of your previous editing session
set viminfo+=n~/.vim/viminfo

if exists("+undofile")
  " undofile - This allows you to use undos after exiting and restarting
  " This, like swap and backup files, uses .vim-undo first, then ~/.vim/undo
  " :help undo-persistence
  " This is only present in 7.3+
  if isdirectory($HOME . '/.vim/undo') == 0
    :silent !mkdir -p ~/.vim/undo > /dev/null 2>&1
  endif
  set undodir=./.vim-undo//
  set undodir+=~/.vim/undo//
  set undofile
endif

Si tout va bien, il a commenté assez bien pour comprendre ce qui se passe. Sinon, ajoutez un commentaire et je vais le corriger.

Ciao!

Mise à jour [07/16/2012]

Je suis un courriel de Rob Kine poser ces questions au sujet de la section backupdir que je voulais répondre à tout le monde:

  1. Il semble que vous supprimez le répertoire courant, puis l'ajouter de nouveau. qu'est-ce que faire?
  2. Qu'est-ce que l'opérateur ^= faire?
  3. Comment l'ordre de priorité dans l'utilisation des dossiers vérifiés travail dans vim? (Comme est le dernier dossier ajouté le premier il vérifie?)

La première chose est de décrire les différents opérateurs. Ces opérateurs ont des significations différentes pour les options non-liste de chaînes, alors soyez averti!

  • -= supprime la valeur à partir d'une liste de chaînes;
  • += la valeur à joint une liste de chaînes;
  • ^= précèder la valeur à une liste de chaînes.

Ainsi, le backupdir a les opérations suivantes appliquées:

  1. Supprimer le répertoire courant de la liste.
  2. Append le répertoire courant à la liste (ce qu'il est de la assure dernière chose cochée).
  3. Supprimer le répertoire de la liste (je ne aime pas être stuff sauvé là-bas).
  4. Prepend ~/.vim/backup/.
  5. Prepend ~/.vim-backup/.

Quand Vim cherche où enregistrer les sauvegardes, il vérifie du premier au dernier; donc il va vérifier ~/.vim-backup/, puis vérifier ~/.vim/backup, puis vérifiez la liste par défaut (sauf pour les . et ~/ qui ont été enlevés), et enfin vérifier .

Vous pouvez obtenir de l'aide pour tous ces dans vim en utilisant (par exemple) :help ^= ou :help backupdir.

Créez le répertoire undo

 $ mkdir ~/.vimundo

Configurer votre fichier .vimrc

 set undodir=~/.vimundo
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top