Vim 似乎无法创建全局缩写。因此,我创建了一个缩写文件(称为 auto Correct.vim),并在 .vimrc 文件中添加了以下行:
:source ~/autocorrect.vim
Run Code Online (Sandbox Code Playgroud)
然后我手动将缩写添加到该文件中。如果我处理任何文档,我都可以使用这些缩写。
但是,如果我正在处理新文档并尝试向此列表添加新缩写词或删除缩写词,则它仅适用于会话。一旦我退出 vi,我就会丢失所有更改。为了使缩写永久化,我必须直接手动编辑 auto Correct.vim 文件。
问题是,如果我在新文档中工作并添加缩写词,我可以看到它们已添加到我的缩写列表中(通过调用 :ab)。然而,当我退出时,它们就丢失了。我怎样才能使这些变化成为全球性的、永久性的?
我希望找到一个不需要插件的解决方案。
为了在 Vim 中保留配置,必须将其保存在配置文件中,其中:help vimrc最重要的一个。这既有优点(无论你在 Vim 中交互地做什么,任何错误都可以通过重新启动 Vim 来修复)和缺点(你想要的很难做到)。我看到以下选项:
:ab您需要将命令放入单独的配置文件中,或者在您的~/.vimrc或单独的配置中(例如) ,而不是使用 et al 动态定义缩写~/.vim/plugin/myabbreviations.vim。这可确保缩写在新的 Vim 会话中保持不变。您还需要:source配置将新缩写导入当前会话。(使用单独的配置,重新加载不应该成为问题;如果您的.vimrc写得不好,则可能会出现问题。)这可能听起来很乏味,但您可以定义自定义:command来快速定位,并:autocmd BufWritePost自动进行:source定位。另一方面,这是一条通往您不想要的“插件解决方案”的道路。:help session-file)(默认情况下'sessionoptions')存储映射和缩写。因此,如果您:mksession在定义新的缩写后(或在退出 Vim 之前)并:source在另一个 Vim 实例中加载该会话(通过 ),您也将保留您的缩写。不幸的是,如果没有插件,会话处理也是一个手动过程并且很容易忘记。而且,持久化的粒度无法控制;基本上都是全有或全无。我个人使用第一个选项,使用打开专用脚本的自定义命令(:Abbreviate、:SnippetEdit等)。