Сохранение настроек vim с документом

Есть ли способ сохранить состояние настроек vim с документом?

Чтобы уточнить: я редактирую документ и меняю кучу настроек. Я не обязательно помню, какой; и я не хочу использовать эти настройки снова, кроме как для текущего документа. Я не хочу вручную пытаться вспомнить, что я изменил; или какие волшебные аббревиатуры означают настройки, которые я изменил. Я просто хочу иметь, скажем, для "mydoc.txt" файл "mydoc.vim", который вернет меня туда, где я остановился, и файл настроек будет сохранен автоматически на основе настройки vim, скажем, или, может быть, ctrl-ключ делает это, прежде чем я выйду. Было бы удобно, если бы vim мог автоматически искать такой файл.

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


person dkretz    schedule 24.11.2008    source источник


Ответы (5)


Вы можете использовать поддержку сеанса Vim:

:mksession

вы можете позже загрузить это, запустив vim -S Session.vim или используя source Session.vim

Существуют также надстройки vim для автоматизации загрузки/сохранения сеанса.

person Hasturkun    schedule 24.11.2008

Да, настройки vim могут быть включены в документ.

В основном они находятся в комментариях, поэтому не портят исходный файл. Пример настроек для конкретных вкладок:

/* ex: set tabstop=8 expandtab: */

Обратите внимание, что эта команда работает в большинстве случаев, однако серверы часто настраиваются без включения modeline из соображений безопасности. Чтобы включить эту функцию, добавьте следующее в свой $HOME/.vimrc или системный $VIM/vimrc:

set modeline
person ypnos    schedule 24.11.2008
comment
Убедитесь, что параметр «modeline» установлен. - person Jeremy Cantrell; 24.11.2008
comment
Дополнительная информация доступна на странице vim.wikia.com/wiki/Modeline_magic. Например, для vim вам нужно будет использовать /* vim: set tabstop=8 expandtab: */. - person Lekensteyn; 14.02.2012
comment
@Lekensteyn или просто: help modeline;) - person Geoffroy; 02.06.2012
comment
Мои пять копеек, но я должен сказать, что для редактора немного высокомерно загрязнять документы, сохраняя настройки, специфичные для редактора. - person joonas.fi; 17.06.2015
comment
Я согласен, однако обратите внимание, что эти комментарии вставляет пользователь, а не редактор сам по себе. Кроме того, vim — не единственный редактор, поддерживающий эту функцию в наши дни. Это зависит от ваших привычек, хотите ли вы использовать эту функцию или нет. Я лично нет. - person ypnos; 17.06.2015
comment
На моей машине modelines (множественное число) было установлено на 0, из-за чего оно по-прежнему игнорировалось. Я думаю, также в качестве меры предосторожности. Вы можете проверить текущую настройку с помощью :set modelines и изменить ее с помощью строки :set modelines=10, чтобы убедиться, что она ищет встроенные настройки в первых 10 строках. - person YoYo; 20.02.2016
comment
например в Питоне: # vim: set shiftwidth=2: - person Vitaly Zdanevich; 15.04.2017

Вы можете сохранить свои настройки глобально, отредактировав файл .vimrc.

Vim также позволяет сохранять настройки для каждого файла с помощью моделей.

person Matthewd    schedule 24.11.2008

Вот как сохранить все текущие настройки в файл:

:redir > textfile.txt 
:set all 
:redir END

Если хотите, просто переименуйте этот файл в ~/.vimrc и вперед.

person Harley Holcombe    schedule 24.11.2008
comment
Если у вас еще нет установленных плагинов, есть также команда :mkvimrc. Но это также фиксирует сопоставления, поэтому, если у вас есть множество сопоставлений плагинов, вам нужно будет просмотреть и удалить все их, чтобы не определять их дважды. - person Ben; 26.11.2013
comment
У меня это сработало, за исключением части ~/.vimrc, которую я не пробовал, потому что она все равно не работает. Это не совсем то, о чем просят, но помогает. - person Evgeni Sergeev; 24.04.2014

Возможно, вы могли бы сохранить файл как определенный тип, например. специальный формат имени файла или расширение, а затем определите автокоманду в вашем .vimrc для этого типа файла.

Я делаю это для своих make-файлов, чтобы убедиться, что у меня есть различные настройки, необходимые для конкретных файлов.

Например, вот моя автокоманда dec.

if has("autocmd")
  autocmd BufRead,BufNewFile Makefile*  :set noexpandtab
  autocmd BufRead,BufNewFile mirror.conf    :set noexpandtab
  autocmd BufRead,BufNewFile *.html*    :set shiftwidth=2
  autocmd BufRead,BufNewFile diff_files :set autowrite
  autocmd BufRead,BufNewFile lbnamed*   :set ft=perl
  autocmd BufRead,BufNewFile *.t        :set ft=perl
endif
person Rob Wells    schedule 24.11.2008