Vim - 选择/猛拉/删除括号之间的内容,包括括号

Ham*_*ish 39 vim

在vim中,是否可以选择括号之间的内容,包括类似于

yi{ yi(
Run Code Online (Sandbox Code Playgroud)

但我想包括括号。

gar*_*ohn 95

是的。使用a代替i,作为

ya{
ya(
Run Code Online (Sandbox Code Playgroud)

:help a{
:help a(
Run Code Online (Sandbox Code Playgroud)

更一般地说,

:help text-objects
:help 04.8
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案! (4认同)
  • 很方便! :) (2认同)

Kro*_*mey 5

做你想做的事f{v%f(v%?它将您的光标移动到下一个 { 或 (,让您进入可视模式,然后将光标移动到相应的结束 } 或 )。如果您已经超出了要选择的范围,则可以使用大写F。也可以先跳到结束语 } 或 ) -- f}v%

一旦您选择了想要的内容,您就可以ydx等等。该%命令也适用于多行,因此如果您愿意,您可以在大块代码上使用此技术(但也f可以F不这样做,因此您必须从第一行或最后一行开始)。

编辑:更好的答案,似乎正是您正在寻找的:

ya(

i将原始命令中的替换为a会执行完全相同的操作,只不过它包含“(”字符。这是“拉动”,而yi(是“拉动内部块”。


kma*_*o23 5

另一种方法是按照以下步骤操作:

  1. 将光标放在左括号(或大括号上{
  2. esc键 再按v进入可视模式
  3. 现在按%符号(这将选择括号之间的整个文本)
  4. 按该键y拉出(即复制)文本(d如果您想剪切文本,请按该键。)

然后,您可以将光标移动到要粘贴新文本的任何位置,然后按p将文本粘贴到那里。


Wuf*_*ers 0

您可以将光标移到一个括号上,然后执行vf{vf(使您进入可视模式,然后选择直到(并包括)括号的所有内容。

  • 实际上,这最终只会选择左大括号。如果您位于左大括号的顶部,“f{”会将您移动到您已经所在的最近的左大括号。您可能想要的是“v%”,它会将您移动到匹配的大括号并且可以在任一侧使用。 (6认同)
  • 这不是正确的答案。请参阅下面@garyjohn 的回答。 (2认同)