【发布时间】:2021-04-07 22:27:42
【问题描述】:
在 vim 中编码时,我在 vimrc 中为 "{(' 添加了自动完成功能,如下所示:
inoremap " ""<ESC>i
inoremap ' ''<ESC>i
inoremap { {<Cr>}<Esc>O
inoremap ( ()<ESC>i
但我发现在函数调用或表达式的末尾手动添加额外的分号 ; 非常烦人。
示例 1:print("hello world"); => 输入 ( 时自动完成应为 );
示例 2:if (true) 或 while (true) => 输入 ( 时自动完成应仅为 )
输入单个( 时,如何正确自动完成示例 1 和示例 2?我的重点是是否有一些简单的方法可以添加if/else 进行键映射。
【问题讨论】:
-
你打算用
foo = bar() + baz();做什么? -
如果您真的想要这种类型的补全,那么请采用诸如github.com/jiangmiao/auto-pairs 之类的插件,它会为您找出极端情况。不,它不会自动添加
;,但它可以让您轻松键入)以跳转到结束括号之后,这样您就可以自己添加;。还有一些“跳转”几个右括号的快捷方式。 (就我个人而言,我发现这种自动完成比它的价值更麻烦,但这只是我的意见......) -
@Matt,你说得对,我最初的想法无法涵盖你提到的情况,也许问题应该改成这样:有没有办法为自动完成?
-
@filbranden 作为一个新的vim用户,我在使用插件时遇到了类似的麻烦。这就是为什么我想自己定制一些日常命令,以便我可以控制它。我曾经安装了一堆插件,最终粉碎了我的 vim 环境。在我能够很好地理解 vim 以解决那些插件冲突之前,我不会接触插件。
-
@filbranden,感谢您的建议,经过几天的vim学习和实践,我学到了很多,现在我可以很好地使用vim-surround了。
标签: vim autocomplete