Чтобы убедиться, что моя личная конфигурация не влияет на поведение, я хочу запустить Vim таким образом, чтобы игнорировать все мои установленные пользователем файлы конфигурации, как если бы Vim только что был впервые установлен заново, а пользователь запустил его. немедленно.
Об этом говорится в разделе часто задаваемых вопросов, в котором говорится, что ответом является запуск Vim следующей командой:
vim -u NONE -U NONE -N -i NONE
Это проходит большую часть пути, но runtimepath
опция все еще содержит ~/.vim
и, в частности, ~/.vim/after
(например, если я впоследствии включу обнаружение типа файла и изменю тип файла, ~/.vim/after/syntax/the_relevant_filetype.vim
будет выполнен код in ).
Я могу обойти эту проблему, вызывая следующие команды при запуске *:
:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after
... но я не уверен, что:
- Это надежное решение: это единственные пути, которые могут повлиять на настройку пользователя? Есть ли что-нибудь еще, о чем я не думал?
- Существует лучший способ достижения желаемого результата.
* Используя аргументы --cmd
или -u vimrc
shell, или просто вводя их вручную.
РЕДАКТИРОВАТЬ : Вот один конкретный пример проблемы, которую я пытаюсь решить. (Хотя я хотел бы, чтобы решение исправляло любые другие возможные проблемы, которые я, возможно, еще не учел.):
Создайте файл ~ / .vim / after / ftplugin / c.vim, содержащий содержимое:
noremap i :echom "This is not default behaviour"<CR>
Теперь у нас есть некоторая установленная пользователем конфигурация, которую мы хотим игнорировать. Давайте проверим решение, предложенное в FAQ.
Запустите Vim с помощью команды:
vim -u NONE -U NONE -N -i NONE
Введите команды:
:filetype plugin on :set ft=c i
Желаемое поведение : Vim должен войти в режим вставки. Это то, что он сделал бы, если бы не было никакой пользовательской конфигурации.
Наблюдаемое поведение : Vim выводит «Это поведение не по умолчанию»
HOME=/dev/null vim -u NONE
?:cd ~
, но также местоположениеviminfo
файла по умолчанию находится в $ HOME, что может вызвать E138. Я думаю, создание нового пустого каталога и использование его для $ HOME может быть лучшим решением.-u NONE
?/tmp
могло бы быть лучше, это была моя первая мысль, но затем я выбрал / dev / null в качестве черной дыры. ... или что-то вродеHOME=$(mktemp -d) vim ...
.-u NONE
? Зависит от того, какое поведение вам нужно, я полагаю.Ответы:
Начиная с Vim 8.0.1554 (к сожалению, пока не Neovim), вы можете использовать
vim --clean
. Этот метод рекомендуется:help bugs
.:help --clean
документы:источник
$HOME
переменной. Goodjob Vim разработчики. И спасибо вам за ответ!--clean
neovim
теперь также работает на master ( github.com/neovim/neovim/commit/… , включается в 0.4.0), но не исключает домашний каталог.Одним из способов устранения пользовательских файлов будет использование другого значения
$HOME
. Чтобы ничего не читалось или не записывалось (например, viminfo), вы можете использовать/dev/null
:Это приведет к ошибкам
viminfo
, поэтому вместо этого вы можете создать временную папку или использовать существующую (например/tmp
):С таким
$HOME
,-u NONE
может не понадобиться, в зависимости от того, что ваш администратор добавил в общесистемнуюvimrc
. Например, на все лабораторные системы я администрировать, я добавил/etc/vim/vimrc.local
(источники по умолчанию упакованного Vim в/etc/vim/vimrc
) , что имеетnocompatible
,syntax
и т.д., множество,filetype on
а также.источник
Я не могу ответить на большинство из этого, но один момент, который я не вижу упомянутым, и повторение ответа на толкование того, что в названии
некоторые предложили
vim -u NONE
илиvim -u NORC
это в некотором смысле немного больше, чем просто файл vimrc. Когда я набираю «я», он не говорит «вставить». Вы можете хотеть, чтобы это все еще сказало 'вставка'. Если вы запустили vim с пустым файлом vimrc, то он покажет insert
это потому, что vim сначала загружает конфигурацию по умолчанию.
Вы можете указать vim на этот файл по умолчанию, чтобы получить эффект пустого файла vimrc. Проверьте, что у вас есть
/etc/vim/vimrc
, и вы можете сделатьvim -u /etc/vim/vimrc
или на OSX, файл по умолчанию/usr/share/vim/vicmrc
источник
vim --clean
будет загруженdefaults.vim
. Этот ответ относится к системе vimrc (см:help system-vimrc
.), Которая , я думаю, не загружаетсяvim --clean
.:help defaults.vim
), может быть лучше , чтобы изменить формулировку ,default config
чтобыsystem vimrc
в этом ответе. Или, что еще лучше, обсудите оба вопроса в ответе!Из Vim-FAQ 2.5 :
источник
ensure that none of the behaviour I'm seeing is caused by user config
- тогда похоже, что вы пытаетесь сделать именно то, что объясняется в этом FAQ. Я перечитал ваш вопрос и до сих пор не понимаю, по каким причинам вы упомянули.runtimepath
настроек.runtimepath
? Похоже, по умолчанию для этой опции, как описано в:help rtp
. Как это значение влияет на ваш тест?