在vim中将一对括号更改为括号的最快方法

kMa*_*ter 16 vim matching parentheses

我是vim的新手,在发现大量有趣的东西的过程中,人们可以使用这个强大的编辑器.

我需要经常做的一件事是将文本中的一对括号更改为方括号(例如更改( (a+b+c) )[ (a+b+c) ])或反之亦然.我现在通过手动改变两个字符做到这一点(,并)[].

但是,当括号之间有大量文本时,可能很难找到一对开括号和右括号,特别是因为在将第一个更改([之后,%命令将不再能够找到相应的).

我想知道是否有更好更快的方法进行此类更改?

Lee*_*ley 32

我个人使用https://github.com/tpope/vim-surround,因为它提供了我所需要的一切,通过源阅读,您可以看到解决方案非常重要.

一个典型的例子:

Hello("World")
Run Code Online (Sandbox Code Playgroud)

将光标放在介于两者之间的位置(),您可以输入cs([普通模式来获取:

Hello["World"]
Run Code Online (Sandbox Code Playgroud)

surround.vim很容易安装Pathogen或Vundle,我个人更喜欢vundle.https://github.com/VundleVim/Vundle.vim

  • `cs([`在块中添加空格,这应该是`cs)]`. (5认同)
  • 对于任何使用 IdeaVim(带有 IntelliJ IDE)的人来说,vim-surround 已经包含在内。您可以使用“:set Surround”启用此功能。 (3认同)

Ben*_*Ben 11

我会这样做:%r]^or[.

这是一个解释:

  • f( - 将光标放在要更改的第一个括号上(如果它尚未存在).
  • % - 跳转到匹配的括号.
  • r] - 用括号替换括号.
  • CTRL-O - 跳回第一个括号.
  • r[ - 用括号替换括号.

  • 正如LucHermitte所提到的,你也可以使用```%r]``r [``` (4认同)

Ken*_*ent 6

surround.vim https://github.com/tpope/vim-surround

有了这个插件,你可以(光标上或中(), cs([实现你的目标.


Luc*_*tte 5

使用lh括号,我将使用<m-b>(任何一对类似括号的字符(光标在该对的第一个/最后一个字符上)更改为一对括号.<m-b>{ - >花括号,依此类推.

对于好奇的,它是如何工作的 - 看s:ChangeTo().在内部,我做了一个%r]``r[,我有一个专门的报价字符处理.