切换包含文件内容和折叠的窗口

时间:2013-07-03 21:27:29

标签: vim vim-plugin

是否有一个Vim插件可以用Tagbar样式打开一个包含文件内容的窗口?

与Tagbar行为的唯一区别在于,当在元素上点击 Enter 时,Vim会在文档中插入元素(跳转到Toggle窗口之前的前一个窗口)。

例如,想象一下我正在编写一个Math文档。我希望有一个名为符号的文件,在某种程度上,我可以告诉

功能符号(带折叠位置)

integral
derivative
plus minus

希腊字母(折叠为ToggleBar)

alpha
beta
gamma

因此,当我输入ToggleMath时,会出现一个包含该内容的切换窗口,当我点击alpha时,会在我的文档中写入alpha。

**编辑 - 答案**

我已经调查了@romainl指出的第一篇文章。最好的解决方案是使用'thesaurus'选项来指示字典。在该文件中(让我们称之为dict.txt),放置这样的条目

'alphaα'

setlocal thesaurus = dict.txt

在插入模式下执行

CTRL-X CTRL-T

将插入

alpha(弹出菜单将显示,数学行分为弹出菜单中的条目)。再次键入CTRL-X CTRL-T和

将插入α删除先前输入的单词alpha。

另一种解决方案(虽然并不完全是质疑)

如果您必须更快地键入(每次按CTRL-X CTRL-T),上面的解决方案会慢一点。您可以创建两个名为math_abb.txt和math_una.txt的文件。一个用于设置缩写,另一个用于未设置的缩写。然后,使用source命令加载它们。

2 个答案:

答案 0 :(得分:0)

老实说,如果我决定在vim.org上搜索它,我不知道是否存在这样的插件,甚至不知道要使用哪些关键字。

但您可以像this answer一样利用Vim的字典完成功能,也可以使用SnipMateUltiSnips之类的代码段扩展插件。

在字典完成后,您可以点击<C-w><C-k>打开光标旁边的弹出菜单,其中包含字典中的所有项目。

例如,使用SnipMate,您可以拥有与grk触发器关联的所有“希腊字母”片段。在插入模式下键入grk<tab>会显示所有希腊字母的列表供您选择。

答案 1 :(得分:0)

这是使用markdown文档执行此操作的快速方法,该文档使用vim-markdown插件自动折叠。可能会与任何折叠设置一起使用。它在左侧窗口中显示顶级部分,在右侧窗口中显示完整文档。

程序:

  1. :vsplit (并根据需要减少左窗长度)
  2. :set foldlevel=0在左侧窗口(显示为完全折叠)
  3. :set foldlevel=999在右侧窗口(显示完全展开)
  4. :windo set scrollbind cursorbind (这将在两个窗口上同时设置两个变量)

现在,当您浏览左侧窗口中的各个部分时,右侧窗口将自动同步位置。导航后,您仍然需要跳回到右侧窗口。