![Vim:管理多种措辞选择](https://linux22.com/image/1437557/Vim%EF%BC%9A%E7%AE%A1%E7%90%86%E5%A4%9A%E7%A7%8D%E6%8E%AA%E8%BE%9E%E9%80%89%E6%8B%A9.png)
(阅读本文后,请建议另一种措辞来回答这个问题,因为我无法想出更好的措辞)
在使用 Vim 编写和编辑时,无论是供人类阅读的文本还是供人类和计算机阅读的文本(代码),我经常无法立即确定某些文本块的最终版本,无论是带有大量同义词的单词(在散文中)还是用途尚不明确的函数名称(在代码中)。例如,在散文中:
我已成功说服他使用 Linux 而不是 Windows。
或者用代码:
def count/countEven/somethingElse(input)
...
...
这就是我当前的工作流程。我想跟踪文本最终版本的所有可能候选者,所以我把它们放在斜线后面。但这种方法存在问题:
这使得文本难以阅读。比较一下我的工作流程:
通过将繁琐/单调和复杂/困难的工作委托/分配到计算机的能力/能力增强/放大了这一点。
正常人是如何写作的:
将单调而困难的工作委托给计算机的能力进一步增强了这一优势。
我当前的方法不会以任何方式突出显示这些未完成的文本块:它们看起来像文本的正常部分。
我无法确定尚未确定的文本块在哪里结束以及“正常”文本在哪里开始。尤其是当某些块候选中有空格时,例如:
... 说服/争辩/劝说...
它可能暗示我有以下四个选择:
说服
说服
争论
争论说服
而实际上选择是
说服
争论
说服
那么,您知道以下形式的解决方案吗:
- 内置 Vim 功能
- 一个插件
- 放入我的 .vimrc 中
- 还要别的吗
解决将所有这些块组合成一个“盒子”的问题,同时又不会分散人们阅读文本的注意力?
如果没有,我应该在 Vimscript 文档(从未在其中编程)中从哪里开始查找以实现下拉菜单解决方案,如下所示?
提前致谢。
PS:一个可能的解决方案。比如,我有以下文本:
我已成功说服他使用 Linux 而不是 Windows。
解决方案如下:
我已经成功了劝说[3]他使用Linux而不是Windows。
主要特点:
- 它只显示我选择的块候选,同时隐藏其他块
- 它可以选择性地显示还有多少其他候选人
- 文本中的这个位置已突出显示,可能使用了不同的文本颜色。
要访问其他候选人,我必须将光标放在劝说[3],单击一个特殊键,它会弹出一个包含所有其他候选词的下拉菜单,就像自动完成功能一样:
I've managed to *persuade[3]* him to use Linux instead of Windows.
convince
argue into
然后我就可以选择(例如,按 Ctrl-N 或 Ctrl-P)更合适的选项。如果能够删除候选,那就太好了。
这只是可能的解决方案之一。
答案1
首先,不要忘记 Vim 是一个文本编辑器,而您的用例在定制编辑方面已经走了很远。所以我想,就现成的解决方案而言,不会有太多。
插件建议
我所拥有的是我的TextFormComplete 插件,这样您就可以以这种形式编写替代方案:
I've managed to [convince|argue into|persuade] him to use Linux instead of Windows.
然后,选项上的q|
(或<C-x>|
插入模式)会询问你一个选项,并用它替换原始选项。这将有助于你进行最终编辑,但除了使用内置撤消。因此,这将允许您在输入句子时推迟选择替代方案,但您必须在那之后尽快做出决定。
实现指针
听起来可以实现你所描述的过程,但我不建议 Vimscript 的初学者这样做。隐藏功能(参见:help conceal
),您确实可以从视图中隐藏/折叠选项。“选定”的选项必须以某种方式标记,例如*convince
。您可以编写映射以轻松将*
标记更改为另一个选项。问题是,隐藏是基于语法突出显示的,可能会干扰通常的文件类型突出显示,例如当您尝试在(Java 等)注释中使用选项时。您只能通过清除所有其他语法元素来避开它。