`source $ MYVIMRC` не работает, когда я удаляю контент, но работает, когда я добавляю контент - PullRequest
0 голосов
/ 16 октября 2018

:source $MYVIMRC не работает, когда я удаляю некоторый контент в .vimrc, но он будет работать, когда я добавляю некоторый контент.

Я хочу включить параметр, который набирает @@, тогда он будетавтоматически показывать мою электронную почту, поэтому я добавляю строку в мой файл .vimrc, например iabbrev @@ XXX@gmail.com и :w, чтобы сохранить файл.После этого я перехожу к исходному файлу, затем набираю :source $MYVIMRC, все работает как положено.НО, если я уберу строку iabbrev @@ xxx@gmail.com и сохраню файл .vimrc.Я снова обращаюсь к исходному файлу, затем набираю :source $MYVIMRC, он все еще работает.Только я выйду из файла и снова открою его.Изменения могут повлиять.Как сделать эффект УДАЛИТЬ изменения, не выходя из файла?

Комментарий к строке аналогичен удалению строки.:source $MYVIMRC не влияет.Влияет только на то, что я закрываю файл и открываю его снова, новый .vimrc будет работать.

Я не являюсь носителем языка, пожалуйста, спросите меня, не понимаете ли вы мою проблему.

Большое спасибо!

1 Ответ

0 голосов
/ 16 октября 2018

Подумайте об этом так: у Vim есть модель времени выполнения , которая содержит все параметры, сопоставления, пользовательские команды и т. Д., Которые в настоящее время активны;это живет в памяти Вима.При запуске Vim строит эту модель с помощью встроенных настроек по умолчанию, а также любой пользовательской конфигурации, такой как ~/.vimrc, и установленных вами плагинов.Когда вы :source используете свою конфигурацию (или плагин), Vim просто обновляет материал, который уже существует и не изменился, и любые дополнения вводятся в модель времени выполнения.

Чтобы удалить вещи, самый простой способ - просто выйти из Vim и перезапустить его .Весь процесс построения модели времени выполнения начнется снова, и все, что вы удалили из вашей конфигурации, больше не будет.

В качестве альтернативы вам придется явно удалить материал из модели времени выполнения;для большинства вещей есть соответствующие отрицательные команды:

  • Для параметров, вы можете восстановить значение по умолчанию с помощью :help :set-&
  • Инверсия :map равна:unmap.Для вашего примера, инверсия :iabbrev @@ ... равна :iunabbrev @@.
  • Там :command и :delcommand.
  • :autocmd можно удалить с помощью :autocmd!: Cp.:help autocmd-remove

Как видите, существуют способы, но их использование несколько противоречиво.Если у вас нет большого количества состояний в редакторе (много открытых файлов, настройки еще не сохранены в конфигурации и т. Д.), Выйти и снова открыть Vim проще.

Ограничение области настроек

Иногда требуется сокращение или настройка только для определенного буфера.Некоторые люди пытаются решить эту проблему, определяя и отменяя определения, но это неуклюже и неправильно: Vim поддерживает это в виде плагинов файлового типа (:help ftplugin).Используя :setlocal вместо :set и :map <buffer>, :abbreviate <buffer>, :command -buffer, эта настройка будет применяться только к буферам этого типа файлов (например, файлам Java, но не коду Python).Если вы введете такую ​​команду в интерактивном режиме, она будет доступна только в буфере current и больше нигде.

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