在 Vim 中为突出显示的文本添加括号

mrQ*_*RTY 22 vim

Vim 中是否有允许在突出显示的文本周围添加括号的功能?

例如,如果我突出显示 n = getchar()in if (n = getchar() == '\n'),我想在它周围加上括号。

dot*_*hen 29

除了 Dmitry对环绕插件的建议之外,还可以使用以下命令在突出显示的文本周围添加括号:

xi()<Esc>P
Run Code Online (Sandbox Code Playgroud)

您可以使用(例如)\s通过将以下内容添加到您的~/.vimrc文件中来在可视模式下设置地图:

xnoremap <leader>s xi()<Esc>P
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的解决方案,但不如使用环绕插件那么完整,因为如果您选择整行(使用 `V` 而不是 `v`),它就不起作用。在这种情况下,它只是将行粘贴到您的括号下方。 (3认同)
  • 这看起来是一个不错且简单的解决方案。如果我以后没有发现任何问题,我会更喜欢这个而不是其他插件。谢谢! (2认同)

Dmi*_*ank 24

你需要一个很棒的和必备的插件环绕。然后,如果您选择文本并键入Sb(大括号)或S)(注意大写的 S !),它会很高兴地执行您想要的操作。

它实际上可以做很多环绕:各种引号,标签等。它允许您将光标放在双引号中,并通过键入:(cs"'将环绕更改"')将双引号更改为单引号。或者您可以通过键入ds"(delete-surround ")来完全删除引号。

通过链接阅读文档,真的很棒!

  • 但是,您没有解释如何使用选择来执行此操作。我被带到这里是因为它不是很明显。 (2认同)
  • 所以你做到了。但是对我不起作用,点击`s`只会删除选择并进入插入模式。 (2认同)

小智 5

命令

c()<Esc>P

解释

如果你想把光标下的单词放在括号里,这是viwc()<Esc>P.

viwv通常选择所有字符ina word。

c()c更改选择并让您进入插入模式,在其中键入字符( )c自动复制您的yank缓冲区(剪贴板)的原始内容。

随着<Esc>PEsc从插入返回正常模式并P使用之前的内容。

  • 我认为你想要(大写)P,以便该单词粘贴在括号之间而不是后面。 (2认同)