在 Vim 中定义持久性缩写

Define persistent abbreviations in Vim

Vim 似乎无法创建全局缩写。所以我创建了一个 缩写文件(称为 autocorrect.vim),其中包含以下行 我的 .vimrc 文件:

 :source ~/autocorrect.vim

然后我手动将我的缩写添加到这个文件中。如果我在任何工作 记录这些缩写可供我使用。

但是,如果我在新文档中工作并尝试添加新文档 此列表的缩写或删除缩写,它仅适用于 session。一旦我退出 vim,我将丢失所有更改。做缩写 permanent 我必须直接手动编辑 autocorrect.vim 文件。

问题是,如果我在新文档中工作并添加缩写,我 可以看到它们已添加到我的缩写列表中(通过调用 :ab)。但是,当我退出时,它们丢失了。我怎样才能做出这些改变 全局和永久?

我希望找到一个不需要插件的解决方案。

为了在 Vim 中保留配置,必须将其保存在配置文件中,其中 :help vimrc 是最突出的配置文件。这既有优点(无论你在 Vim 中交互做什么,任何搞砸都可以通过重新启动 Vim 来解决)和缺点(你想做的事很难做)。我看到以下选项:

  • 无需使用 :ab 等动态定义缩写,您需要将命令放入单独的配置文件中,可以在 ~/.vimrc 中,也可以在单独的配置中(例如 ~/.vim/plugin/myabbreviations.vim).这可确保缩写词在新的 Vim 会话中保持不变。您还需要 :source 配置以将新缩写导入当前会话。 (使用单独的配置,重新加载应该不是问题;如果您的 .vimrc 写得不好,可能会出现问题。)这听起来很乏味,但您可以定义自定义 :commands 来快速定位,并且:autocmd BufWritePost 自动 :source 它。另一方面,这是通往您不想要的 "plugin solution" 的道路。
  • Vim 支持 sessions (:help session-file) that (with the default 'sessionoptions') 存储映射和缩写。因此,如果您 :mksession 在定义了一个新缩写之后(或就在退出 Vim 之前)并在另一个 Vim 实例中加载该会话(通过 :source),您将获得也保留您的缩写。不幸的是,如果没有插件,会话处理也是一个手动过程,很容易忘记。此外,无法控制持久化的粒度;这主要是全有或全无。
  • 正如评论中已经提到的,有一些插件可以让这变得简单。如果这只是关于您的缩写(并且您对一般的其他配置处理感到满意),则可能值得一试。

我个人使用第一个选项,使用自定义命令(:Abbreviate:SnippetEdit 等)打开专用脚本。