Vim 如何做到「括号等符号的补全」?(如同 IDE 那般智能)

2016-02-22 20:55:21 +08:00
 wentian
有如下需求(基本就是 IDE 中那些功能)
1 自动出右半边
2 删除时,自动删除配套的右半边
3 能够跳出
4 智能识别(如果右边已经有一个了,那么不自动补全)

我自己实现了一个(但是很不够用)
inoremap ( ()<left>
inoremap [ []<left>
inoremap " ""<left>
inoremap ' ''<left>
inoremap { {}<left>

搜索了一圈,也没有理想结果(可能是关键词组织不对)
3400 次点击
所在节点    Vim
8 条回复
Frapples
2016-02-22 22:06:43 +08:00
推荐 delimitMate 插件:
https://github.com/Raimondi/delimitMate

注:记得打开以下选项。在输入{之后,会补全}。之后你如果再按回车的话,该选项能自动添加一行并自动缩进。你试试就知道了。
let g:delimitMate_expand_cr = 1
Neveroldmilk
2016-02-22 22:54:17 +08:00
装插件啊, VIM 就是靠这个为生的。
wentian
2016-02-22 22:56:55 +08:00
@Frapples Thanks. 果然是关键词组织不好,「 auto completion quotes 」,一下找到好多现成的
;)
epkT6QJ3RSaz6AnJ
2016-02-23 00:32:45 +08:00
可以试试这个
The ultimate vim distribution http://vim.spf13.com
yangyanggnu
2016-02-23 10:34:53 +08:00
平时,最让我头痛的字符莫过于 {}、""、[] 等这类结对符,输入它们之所以麻烦,主要因为 A )盲打很难找准它们位置, B )还得同时按住 shift 键。两者再一叠加,非常影响我的思维。要高效输入结对符,应该是输入少量几个字母(对,字母,不是字符)后 vim 自动为你输入完整结对符,而非是我输入一半 vim 输入另一半(不用 delimitMate 的原因)。刚好,这在 UltiSnips 能力范围内,只要定义好模板,可完美地解决这类问题

https://github.com/yangyangwithgnu/use_vim_as_ide#8.1
knightdf
2016-02-23 11:41:35 +08:00
成对的符号我都是手打。。。习惯了
wentian
2016-02-23 11:44:41 +08:00
@yangyanggnu 昨晚试了 deleteMate,感觉问题解决了
UltiSips 非常棒,但是要花点时间
btw, UltiSnips 与 snipMate 有什么不同吗
suixn
2016-02-23 18:36:14 +08:00
原来自己折腾,后来用了别人的,基本也就不折腾了。
https://github.com/ma6174/vim
这个不错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/258328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX