Отключение создания файлов подкачки в vim


216

Есть ли способ отключить .swp создание файлов в vim? или, по крайней мере, создать их все в одном месте, чтобы я мог легко найти и удалить их.

Я нахожу их особенно раздражающими, когда копирую родительский каталог во время редактирования. Конечно, я знаю, что могу использовать find -exec, чтобы найти и удалить их. Но я хочу более практичное решение.



Ответы:


255

Чтобы отключить файлы подкачки из vim, введите

:set noswapfile

Чтобы навсегда отключить файлы подкачки, добавьте в свой ~/.vimrcфайл ниже

set noswapfile

Для более подробной информации смотрите документацию Vim на swapfile


6
Файлы подкачки хороши, если ваш редактор выходит из строя (отключение питания и т. Д.), Просто имейте в виду.
koonse

1
Другой вариант по-прежнему использовать файл подкачки, но оставить его в памяти, чтобы он не продолжал записывать на жесткий диск. Это не может защитить вас от потери файла во время сбоя, но если вы откроете тот же файл в anther vim, он немедленно сообщит вам об этом. Команда выглядит так: set directory = / dev /
shm

Ответ trusktr позволяет вам сохранить преимущества файлов подкачки при решении проблемы ОП.
jpaugh

Внутри vim вы также можете отключить файл подкачки при открытии файла::noswapfile edit /path/to/file
Torkel Bjørnson-Langen

Моя личная философия о потере данных - DBAB и часто сохраняйте ...
Сэми Бенчериф

156

Установите следующие переменные в .vimrc или / etc / vimrc, чтобы vim помещал файлы подкачки, резервного копирования и отмены в специальное место вместо рабочего каталога редактируемого файла:

set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//

Использование двойной косой черты в пути указывает vim включить функцию, в которой он избегает конфликтов имен. Например, если вы редактируете файл в одном месте, а другой файл в другом месте, и оба файла имеют одинаковые имена, вы не хотите, чтобы в ~ / .vim / swap / происходило столкновение имен. Если вы укажете ~ / .vim / swap // с двумя завершающими косыми чертами, vim создаст файлы подкачки, используя полный путь редактируемых файлов, чтобы избежать коллизий (косые черты в пути файла будут заменены символом процента%).

Например, если вы измените /path/one/foobar.txt и /path/two/foobar.txt, вы увидите два файла подкачки в ~ / .vim / swap /, которые называются% path% one% foobar.txt и% path% two% foobar.txt, соответственно.


Вы также можете добавить, что через некоторое время сохраненные файлы резервных копий могут сохранить скин разработчика
Bartek Skwira

Комментарий: (не критика). Это кажется хорошим, главным образом, для разработки, потому что для чтения файлов и небольших правок или неважного ведения заметок, которое является большой частью использования vim для многих людей, кажется, что дополнительная работа по поддержке лучше не делать. Я лично предпочитаю, чтобы на всех работах просто не было свопов или других автоматических резервных копий. Если мне действительно нужно что-то разрабатывать, я бы предпочел более высокоуровневую инфраструктуру, чтобы защитить меня, желательно с контролем версий кода и т. Д.
jvv

@LelaDax Правда, в большинстве случаев эти файлы в основном бесполезны, потому что я использую git для всего моего исходного кода. В редких случаях (например, авария) они могут пригодиться. Но на самом деле, история отмены я использую много. Гораздо проще перемещаться по нему, чем проверять коммиты git для просмотра предыдущей истории. Gundo позволяет легко и удобно перемещаться по дереву отмены. Я мог бы жить без файлов подкачки и резервного копирования, хотя.
trusktr

26
Просто FYI для людей, которые являются новыми (как я, ха-ха ...), вы должны пойти в ~ / .vim / и сделать каталоги самостоятельно. Он не будет автоматически создавать их для вас.
августа

1
Вы также можете написать код в своем vimrc для автоматического создания папок для вас, что я и сделал в своей. Итак, на новых системах я просто получаю свой vimrc, и он позаботится обо всем остальном.
trusktr

42

Я нашел ответ здесь :

vim -n <file>

открывает файл без файла подкачки.

К тому же:

set dir=/tmp

in .vimrcсоздает файлы подкачки в /tmp.


Как насчет *.ext~файлов резервных копий? Есть ли опция командной строки, чтобы отключить их?
Салман фон Аббас

Это очень полезно для этих одноразовых огромных файлов! Спасибо.
Фелипе Альварес

28

вот мои личные настройки резервного копирования ~ / .vimrc

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup

13

Я согласен с теми, кто задается вопросом, зачем vim нужны все эти материалы для аварийного восстановления, когда другие текстовые редакторы не беспокоятся об этом. Я не хочу, чтобы vim создавал ЛЮБЫЕ дополнительные файлы в каталоге отредактированного файла, когда я его редактирую, большое спасибо. Для этого у меня есть это, _vimrcчтобы отключить файлы подкачки и переместить раздражающие «резервные» файлы в каталог Temp:

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created
"set nobackup

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether)
set backupdir=C:\Windows\Temp

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created
set noswapfile

9
Я думаю, что тот факт, что другие редакторы не беспокоятся об этом, плохо отражается на других редакторах больше, чем плохо на vi (m). Выбор сделать этот-же-каталог местом по умолчанию для размещения этих файлов несколько неудачен, хотя, по крайней мере, минимально оправдан. (например, в многосерверной среде с высокой степенью перекрестного монтирования может быть неочевидно, где найти файл восстановления в тот момент, когда он вам нужен наиболее срочно)
Доминго Игнасио

3
Обработка файлов подкачки Vim просто ужасна. Я использовал это, чтобы восстановить потерянные данные, возможно, 5 раз. Но мне приходилось восстанавливать файл подкачки около 9000 раз, который в любом случае всегда идентичен файлу, или, что еще хуже, устаревшей версии. Это может быть хорошей особенностью, если процесс восстановления не так ужасно. recovery.vim немного помогает, но все еще слишком интерактивен.
Joeytwiddle

3
Возвышенный текст имеет disaster recovery. Я люблю это! Мне даже не нужно сохранять файл, когда я возобновляю внесенные изменения, сохраненные или нет, они возвращаются обратно.
leetNightshade

У меня есть простая автокоманда, которая записывает все изменения сразу после их внесения, делая бесполезными как файлы подкачки, так и резервные копии.
tbodt

2
@ TorkelBjørnson-Langen Вероятно, я виновата в том, что перезагрузила мою машину, не закрывая все мои сеансы Vim, а затем не поняла, какие файлы восстановления действительно действительны. В любом случае я попытался получить лучшее из обоих миров, написав плагин, который поддерживает файл подкачки
joeytwiddle

7

Вы можете установить для backupdir и directory значение null, чтобы полностью отключить файлы подкачки, но обычно рекомендуется просто поместить их в централизованный каталог. Vim заботится о том, чтобы не было совпадений имен или чего-либо подобного; Итак, это абсолютно безопасная альтернатива:

set backupdir=~/.vim/backup/
set directory=~/.vim/backup/

3
Вы должны добавить двойную косую черту //в конце путей, чтобы вы могли изменить два файла с одинаковыми именами одновременно.
Сэмюэль О'Мэлли

Спасибо, @ SamuelO'Мэлли. Что // делает?
монокром

Посмотрите :help directory, хотите ли вы прочитать документы для этого. Двойная косая черта говорит vim кодировать полный путь файла в имя файла подкачки, например %home%sam%dotfiles%.gitignore.swp, а не просто .gitignore.swp.
Сэмюэл О'Мэлли


3

Если вы используете git, вы можете добавить *.swpв .gitignore.


Я думаю, это то, что нужно большинству пользователей! Отключение файлов подкачки - плохая практика.
ДенисКолодин

2

не создавать файл подкачки vim только для определенного файла

autocmd bufenter  c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile

1
Или для всех файлов в определенном каталоге, кажется, работает следующее (только краткое тестирование):autocmd bufenter c:/aaa/Dropbox/TapNote/* :set noswapfile
scottkosty

1

Для тех, кто пытается установить это для проектов Rails, добавьте

set directory=tmp,/tmp

в ваш

~/.vimrc

Таким образом, файлы .swp будут находиться в их естественном расположении - в каталоге tmp (для каждого проекта).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.