Изменить имя файла подкачки/резервного копирования/отмены Vim

StackOverflow https://stackoverflow.com/questions/4331776

  •  30-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Ключ - это // В конце каталогов. Смотрите эту записку из :help dir:

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

Другие советы

Вот часть моего .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

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

Чао!

Обновление [16.07.2012]

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

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

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

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

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

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

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

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

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

 $ mkdir ~/.vimundo

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

 set undodir=~/.vimundo
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top