我有点困惑 vim 自动配对 ( https://github.com/jiangmiao/auto-pairs ) 是否可以成对移除/解包。例如,如果您有 (foo)
是否可以删除第一个或第二个括号并同时删除它们?文档说:
g:AutoPairsMapCh
Default : 1
Map <C-h> to delete brackets, quotes in pair
但我不明白这是不是我要找的。我在 insert
中都试过了和 normal
模式(即在光标位于括号上时按 <Control-h>
)并且它似乎不起作用,除非存在其他问题(例如 <Control-h>
绑定(bind))。我还检查了变量 echo g:AutoPairsMapCh
并返回 1
最佳答案
对删除自动配对的支持仅限于它们之间没有任何内容(除了空格)时才有效。
g:AutoPairsMapBS
启用的代码, backspace 键,和 g:AutoPairsMapCh
, 对于 <C-h>
序列(在某些系统中通常由退格键发送),默认情况下都启用它们,仅当在插入模式下使用退格键(或 <C-h>
)删除左括号时,当光标后的下一个是右括号时才有效括号(中间可能有一些空格。)
如果您写错了一组括号并想要更正,此功能很有用。例如,如果你想写 foo(bar)
, 但你写 foo{
, 自动配对完成 foo{}
(光标位于花括号之间),您可以简单地使用 basckspace 删除两对,回到 foo
, 然后你可以输入 (bar
去foo(bar)
.
如果您将光标放在 b
上,它实际上不起作用在“栏”中,即使在插入模式下,按退格键或 <C-h>
.它将删除 (
, 但由于 )
不在光标之后,它不会真正删除它。
因此,此功能对于立即更正发现的小拼写错误最有用,而不是修改已经存在一段时间的代码对。更重要的是,如果您现在遇到问题,您可以像往常一样纠正它,而不是特意删除为您自动配对插入的不需要的右括号...
如果您想要一个插件来帮助处理文本中已有的括号,并且可以插入、删除它们、用其他括号组替换它们等等,请查看 Tim Pope 的优秀 surround.vim ,它定义了强大的普通模式命令来管理成对的圆括号、方括号、引号、XML 标记等。
关于vim auto-pairs remove/umwrap pair of brackets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60954163/