如何在vim中自动创建匹配的花括号?
它的工作方式如下:如果我输入了一个右括号,则右括号应会自动出现,并且光标应位于两者之间。要跳出括号对,Ctrl-j可以使用组合。
有很多插件可以自动插入括号。但是他们
- 使用不同于Ctrl-j跳出括号对的组合键,或者
- 干扰UltiSnips按键绑定。
预期效果如下
:inoremap ( ()<Esc>:let leavechar=")"<CR>i
:imap <C-j> <Esc>:exec "normal f" . leavechar<CR>a
但是使用这些设置,UltiSnips片段不再起作用。所以我用UltiSnips插入了右括号:
inoremap ( (<C-R>=UltiSnips_Anon('($1)$0', '(')<CR>
这几乎可行。匹配的括号被插入,我可以用跳过结尾的括号Ctrl-j。但是,仅当开放式支架前面有空间时,此方法才起作用。
main () // works, the closing parentheses is added
main( // fails without a space
我的解决方案要么需要使用其他键绑定来跳过闭合括号,要么需要在打开的括号前面留一个空间。如何解决这个问题?
注意:我以括号为例。它应使用括号,大括号,方括号和小于号,并且不会干扰UltiSnips插件。
)
,重新映射c-j
可能会起作用。