检测 Vim 中光标后是否有用于自动关闭的括号

Detect if There is A Bracket After Cursor in Vim For Autoclosing

提问人:xyz 提问时间:11/9/2023 更新时间:11/10/2023 访问量:29

问:

我设置了 vim,所以当我放置一个打开的括号时,它会自动完成它并将我的光标放在它们之间,我很难找到在放置“]”时如何转到括号的末尾,目前它只是“[]]”,但我希望它像代码编辑器一样将我的光标移出右括号。
我目前的代码:

inoremap ( ()<Left>
inoremap [ []<Left>
inoremap { {}<Left>
inoremap " ""<Left>
inoremap ' ''<Left>
inoremap ` ``<Left>
vim ide 文本编辑器 neovim

评论

0赞 romainl 11/9/2023
如果你还是这样做了,之后自动插入它有什么意义?此外,还有很多插件可以完全按照您的意愿工作。][

答:

1赞 xyz 11/10/2023 #1

这似乎只有在空的时候才有效,但我不能 100% 确定这是否正确,我只是自己发现的。

inoremap ( ()<Left>
inoremap [ []<Left>
inoremap { {}<Left>
inoremap " ""<Left>
inoremap ' ''<Left>
inoremap ` ``<Left>
inoremap <expr> ) search('(\%#)', 'n') ? "\<Right>" : ")"
inoremap <expr> ] search('\[\%#\]', 'n') ? "\<Right>" : "]"
inoremap <expr> } search('{\%#}', 'n') ? "\<Right>" : "}"

希望其他人能有比我更有用的答案。

评论

0赞 Friedrich 11/10/2023
你如何定义正确性?你是你自己的客户。如果它适用于您和您的用例,那么它是正确的。