Определите постоянные сокращения в Vim

Кажется, Vim не может создавать глобальные сокращения. Поэтому я создал файл сокращений (называемый autocorrect.vim) со следующей строкой в ​​моем файле.vimrc:

 :source ~/autocorrect.vim

Затем я вручную добавил свои сокращения в этот файл. Если я работаю в каком-либо документе, эти сокращения доступны для меня.

Однако, если я работаю в новом документе и пытаюсь добавить новые сокращения в этот список или удалить сокращения, это будет продолжаться только для сеанса. Как только я выйду из Vim, я потеряю все изменения. Чтобы сделать аббревиатуры постоянными, я должен вручную отредактировать файл autocorrect.vim напрямую.

Дело в том, что если я работаю в новом документе и добавляю сокращения, я вижу, что они были добавлены в мой список сокращений (по телефону: ab). Однако, когда я выхожу, они теряются. Как я могу сделать эти изменения глобальными и постоянными?

Я надеюсь найти решение, которое не требует плагина.

1 ответ

Решение

Чтобы сохранить конфигурацию в Vim, она должна быть сохранена в файле конфигурации с :help vimrc как самый выдающийся. Это имеет как плюсы (независимо от того, что вы делаете в Vim в интерактивном режиме, любой сбой можно исправить путем перезапуска Vim), так и минусы (то, что вы хотите, трудно сделать). Я вижу следующие варианты:

  • Вместо определения сокращений на лету с :ab и т. д., вам нужно поместить команду в отдельный файл конфигурации, либо в ~/.vimrc или в отдельном конфиге (например, ~/.vim/plugin/myabbreviations.vim). Это гарантирует, что сокращение сохраняется для новых сеансов Vim. Вам также нужно :source Конфигурация для импорта новой аббревиатуры в текущий сеанс. (С отдельной конфигурацией, перезагрузка не должна быть проблемой; .vimrc плохо написано.) Это может показаться утомительным, но вы можете определить пользовательские :command s, чтобы быстро найти, и :autocmd BufWritePost автоматически :source Это. С другой стороны, это путь к "плагиновому решению", которое вам не нужно.
  • Vim поддерживает сеансы (:help session-file) что (по умолчанию 'sessionoptions') хранить сопоставления и сокращения. Так что если вы :mksession после определения новой аббревиатуры (или непосредственно перед выходом из Vim) и загрузки этого сеанса (через :source) в другом экземпляре Vim вы также сохраните свои сокращения. К сожалению, без плагина обработка сеанса также является ручным процессом и его легко забыть. Кроме того, гранулярность того, что становится постоянным, не может контролироваться; это в основном все или ничего.
  • Как уже упоминалось в комментариях, есть плагины, которые делают это просто. Если это только аббревиатуры для вас (и вы довольны другой обработкой конфигурации в целом), возможно, стоит попробовать.

Я лично использую первый вариант, с пользовательскими командами (:Abbreviate, :SnippetEdit и т. д.), которые открывают специальные сценарии.

Другие вопросы по тегам