Отключение создания файлов подкачки в 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.