单词不完整


13

<C-p><C-n>允许填写当前文档中的单词。

我采取了一些笔记,写的发言权{0,1}^n(E,D)多次。这些是由几个单词构成的单词。

有没有一种方法可以用<C-p><C-n>(或其他相关ins-completion命令)来完成WORD ?


1
您最好:abbreviate改用。例如,发出:ab 01n {0,1}^n命令。然后,每次01n在插入模式下键入一个独立单词时,它将扩展为{0,1}^n
200_success

@ 200_成功,谢谢。我曾经考虑过缩写,但仍然想知道是否可以使用ins-completion
2015年

Answers:


5

插入模式完成 Ctrl-n

我不知道您是否可以在编写自己的函数(例如omnifunc)之外进行WORD补全。但是,如果您不介意扩展单词以匹配您的字符,则可以将这些字符添加到“ iskeyword”中

例如,我的“ iskeyword”默认为

iskeyword=@,48-57,_,192-255

然后,将其设置为该值加上上面的其他字符

:set iskeyword=@,48-57,_,192-255,{,},,,(,),^

这增加了{},(),和^以组成一个字的文字(除了那些已经做了)

之后,键入{Ctrl-n完成至{0,1}^n(在仅包含您给出的两个示例的文件中)

注意:最好:set iskeyword+=只使用其他内容,如下所示:

:set iskeyword+={,},,,(,),^

这样,通过将新字符附加到现有设置中,您就可以使其他任何东西都不再构成关键字。

缩写形式扩展

尽管不是原始问题的一部分,但另一个相似的功能是使用nvi或Vim的缩写功能。与关键字完成不同,缩写不必看起来像最终文本。另外,与关键字补全不同,缩写会自动扩展,而不是仅在您要求时才扩展。根据您的目标和使用情况,这可以节省大量的键入时间,并且使您可以键入很多文本而不会中断要求填写的内容。

缩写词适合一小部分关键字,并且您可以提前定义它们(不会像单词补全一样从文本中发现它们)。

缩写的基本思想是将WORD与其他一些文本关联,并且每当编辑器检测到您键入该WORD时(即,您键入的文本被空白包围,完成操作将在其后添加空白)关键字或退出插入模式),则将其替换为其他文本。

假设您的文件包含{0,1}^n很多内容,并且没有其他变体。键入时有点费力,所以也许您只想输入01nmyvalue并将其扩展为{0,1}^n,但仅当01n或是myvalue一个单独的单词时(也就是说,如果它恰好出现在另一个单词中,则不要更改)。

在nvi中,您可以这样做:abbrev 01n {0,1}^n。您可以在Vim中执行相同的操作,但是我建议使用:iabbrev 01n {0,1}^n来限制扩展为仅插入模式。

然后,如果您有一些文本(其中|表示光标)

We find that the value 01n|

然后您按下EscSpaceTab或以其他方式移动光标,文本被替换,并且您拥有了(使用空格的示例)

We find that the value {0,1}^n |

您可以继续输入而不会打扰。

这通常用于自动更正常见的拼写错误(例如,将“ teh”更改为“ the”),但对于您的用例也同样有用,再次假设您不介意提前设置映射。


对我来说,这似乎:set iskeyword+={,},,,(,),^按预期工作。
Karl YngveLervåg2015年

1
确实如此。上次尝试时,Vim一直告诉我这是语法错误。一定是在别的地方。更新我的答案。
John O'M。

@ JohnO'M。您能否添加参考资料,说明如何abbreviate使其更适合此工作?
2015年

@GonçaloRibeiro完成。希望对您有所帮助。
John O'M。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.