Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 魔术闭合支架_Vim - Fatal编程技术网

Vim 魔术闭合支架

Vim 魔术闭合支架,vim,Vim,如果我能在vim中键入](或其他字符,可能是),并让它自动插入正确关闭开头括号的括号,那将是一件非常棒的事情。如果我的缓冲区中有这个: object(function(x) { x+[1,2,3 我按下]],字符]}将被插入。如何实现这一点?您可以将其添加到.vimrc中,它将自动关闭括号 inoremap ( ()<Left> inoremap [ []<Left> inoremap { {}<Left> inoremap() inoremap[] in

如果我能在vim中键入
]
(或其他字符,可能是
),并让它自动插入正确关闭开头括号的括号,那将是一件非常棒的事情。如果我的缓冲区中有这个:

object(function(x) { x+[1,2,3

我按下
]]
,字符
]}
将被插入。如何实现这一点?

您可以将其添加到.vimrc中,它将自动关闭括号

inoremap ( ()<Left>
inoremap [ []<Left>
inoremap { {}<Left>
inoremap()
inoremap[]
inoremap{{}

这是您可能想要的东西的草图。内置函数
searchpair
searchpairpos
对各种文本编辑任务都有很大帮助:)

要舒适地使用它,请对其进行
imap

imap <C-e> <C-r>=CloseParen()<CR>
imap=CloseParen()
编辑:跳过了搜索regexp,因此搜索中包含了
\
。现在少了一个问题。

结合插件,您可以设置:

imap <c-l> <c-o>l
imap l
Autoclose将插入匹配的括号,然后ctrl-L将跳过它而不离开插入模式。对我来说,ctrl-L比ctrl-]更有意义


这是我能说的最接近你要求的:“让我每次按同一个键跳过输入正确的括号,不管括号是什么。”我不会imap](没有修饰符)你试过了吗?@khachik-
autoclose
会立即关闭括号,至少对我来说,这是相当烦人的。当我第一次被教编程时,很多理发师都告诉我一打开括号就要关闭括号。从那时起,它就一直困扰着我ks在任何编辑器中:-)我已经将nperson325681的答案扩展到了。是的,当编辑器这么做时,我总是觉得有点烦人。很难说我的上下文是什么或是什么……谢谢。没错,我在我的.vimrc:)中已经注释了这些内容。我之前已经为封闭的LaTeX环境编写了类似的解决方案。它有点笨拙,更像宏比这更有效。当有合理的事情要做的时候才有效。否则会让硬核呕吐。不过,这会让我开始的,谢谢!@luqui:真的吗?我尝试了一些无操作的情况,它对我做了正确的事情。@luqui:我现在明白了。确实有些东西需要调试。@progo:这太棒了。我对它进行了一些改进,并将其作为插件发布。你知道吗我把它放在下面有什么问题吗?
imap <c-l> <c-o>l