Подтвердить что ты не робот

Изменить имя файла Vim swap/backup/undo

Можно ли изменить способ, которым Vim называет свои файлы подкачки/резервного копирования/отмены?

Чтобы избежать беспорядка, я установил параметры в своем ~/.vimrc, чтобы сбрасывать эти файлы в ~/.vim/tmp/{swap,backup,undo}; однако, поскольку я регулярно редактирую файлы в разных каталогах с одним и тем же именем, я часто получаю много других неразличимых файлов, и у Vim иногда возникают проблемы с восстановлением.

В идеале, я бы хотел использовать схему именования, которая была бы постоянной (для %path%to%file.undo) для всех этих вспомогательных файлов; нет очевидного способа установить его, но можно ли это сделать с помощью Buf{Read,Write} макросов?

4b9b3361

Ответ 1

У меня есть это в моем .vimrc и он называет файлы подкачки с полными именами путей и знаками процента так же, как вы описываете:

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

Ключ // в конце каталогов. См. Это примечание от :help dir:

  • Для Unix и Win32, если каталог заканчивается двумя разделителями путей "//"      или "\\", имя файла подкачки будет создано из полного пути к       файл со всеми разделителями путей заменен на знаки% '%'.       Это обеспечит уникальность имени файла в каталоге сохранения.

Ответ 2

Здесь часть моего .vimrc из github.

Это устанавливает undodir (и включает его), устанавливает backupdir и directory (используется для файлов .swp). Обратите внимание, что он создает каталоги, если они еще не существуют.

" 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

Надеюсь, он прокомментировал достаточно хорошо, чтобы понять, что происходит. Если нет, добавьте комментарий, и я исправлю его.

Ciao!

Обновление [07/16/2012]

Я получил электронное письмо от Роба Кина, задающее эти вопросы о разделе backupdir, на который я хотел ответить всем:

  • Похоже, вы удаляете текущий каталог, а затем повторно добавляете его. что это делает?
  • Что делает оператор ^=?
  • Как работает порядок приоритета в использовании папок в Vim? (Как и последняя папка добавлена ​​первая, которую она проверяет?)

Первое, что нужно описать для разных операторов. Эти операторы имеют разные значения для параметров, отличных от строкового списка, поэтому будьте предупреждены!

  • -= удаляет значение из списка строк;
  • += добавляет значение в список строк;
  • ^= добавляет значение в список строк.

Итак, backupdir имеет следующие операции:

  • Удалить текущий каталог из списка.
  • Добавить текущий каталог в список (это гарантирует, что это проверено последним).
  • Удалите домашнюю директорию из списка (мне не нравится, когда там сохраняется материал).
  • Подготовить ~/.vim/backup/.
  • Prepend ~/.vim-backup/.

Когда Vim ищет, где сохранить резервные копии, он проверяет от первого до последнего; поэтому он проверяет наличие ~/.vim-backup/, затем проверяет ~/.vim/backup, затем проверяет список по умолчанию (за исключением . и ~/, которые были удалены), и, наконец, проверьте .

Вы можете получить помощь по всем этим в Vim, используя (например) :help ^= или :help backupdir.

Ответ 3

Создать каталог отменить

 $ mkdir ~/.vimundo

Настройте файл .vimrc

 set undodir=~/.vimundo