在Vim中定义持久化缩写

3

Vim似乎不能创建全局缩写词,因此我在我的.vimrc文件中创建了一个缩写词文件(称为autocorrect.vim),其中包含以下行:

 :source ~/autocorrect.vim

我手动将缩写添加到了这个文件中。如果我在任何文档中工作,这些缩写都可以使用。

然而,如果我在一个新的文档中工作,并尝试向该列表中添加新的缩写或删除缩写,则只会持续该次会话。一旦退出 vim,我就会失去所有更改。要使缩写永久,我必须直接手动编辑 autocorrect.vim 文件。

问题是,如果我在新文档中工作并添加缩写,我可以通过调用 :ab 看到它们已被添加到我的缩写列表中。然而,当我退出时,它们就丢失了。如何使这些更改全局和永久?

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


4
https://vi.stackexchange.com/questions/7750/how-do-i-manage-and-remember-many-abbreviations-in-my-vimrc - phd
2
https://www.vim.org/scripts/script.php?script_id=2477 - phd
1
在 Vim 中,“全局”和“本地”有不同的含义(并且也适用于缩写);我已经将您的标题编辑为您的意思是“持久”的缩写。 - Ingo Karkat
1个回答

8
为了在Vim中保留配置,必须将其保存在配置文件中,其中以:help vimrc最为突出。这既有优点(无论你在Vim中做什么交互操作,任何失误都可以通过重新启动Vim来修复),也有缺点(你想要的很难实现)。我看到以下几个选项:
  • 不要使用:ab等命令即时定义缩写,而是需要将命令放入单独的配置文件中,可以放在你的~/.vimrc中,也可以放在一个单独的配置文件中(例如~/.vim/plugin/myabbreviations.vim)。这样可以确保缩写在新的Vim会话中持久化。您还需要使用:source命令导入新的缩写到当前会话中。(使用单独的配置文件,重新加载不应该成为问题;如果您的.vimrc编写不好,可能会出现问题。)这听起来可能很繁琐,但是您可以定义自定义的:command来快速定位,并使用:autocmd BufWritePost自动:source它。另一方面,这是通向“插件解决方案”的路径,您可能不想要这种情况。
  • Vim支持会话:help session-file),它(使用默认的'sessionoptions')存储映射和缩写。因此,如果在定义新缩写后(或者在退出Vim之前)使用:mksession并在另一个Vim实例中加载该会话(通过:source),您也将保留您的缩写。不幸的是,在没有插件的情况下,会话处理也是一个手动过程,容易被忘记。而且,无法控制持久化的粒度;它大多是全有或全无。
  • 正如评论中已经提到的,有一些插件可以使这个过程变得简单明了。如果这只是关于缩写(并且您对其他配置处理总体感到满意),那么值得一试。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接