允许鼠标操作

.vimrc文件里加上set mouse=a

移动光标到第一个非空格字符

^,移动光标到当前行的第一个非空格字符。

另外,0移动光标到行首。+移动光标到下一行的第一个非空格字符,-移动光标到上一行的第一个非空格字符。

删除一个函数

假设有如下函数,

int sum() {
  int total = 0;
  for (int i = 0; i < 42; i++) {
    total += i;
  }
  
  return total;
}

使光标位于函数体内(且光标位于for循环体外),然后da}ddda},删除当前光标所在”{}块”,此时函数只剩下了int sum() 行;然后,再通过dd删除这一行。

删除函数体:使光标位于函数体内,然后di}。操作完成之后,剩下的代码是int sum() {}

拷贝一个函数

假设函数还是如上所示。 使光标位于函数体内(且光标位于for循环体外),然后va}o0y

v,进入visual mode。 a},选择当前的“{}块”。o,改变visual mode中光标的移动方向。 0,移动光标到行首。y,拷贝。

如果函数的{是另起新行的,比如,

int sum() 
{
  // ...
}

那么,使用va}o-0。通过-使得光标上移一行。

删除函数声明中的参数

假设函数声明为,int sum(int a, int b)。将光标至于“()”内,然后di)可以删除“()”内所有参数。

da)可以连()在内一并删除。

找到匹配的{}()[]

%可以找到和光标所在的{、}、(、)、[、]相匹配的另一半。

选择文本

v进入visual mode,然后按}或者{可以选择下一“段落”(段落就是空行隔开的文字块)或者上一“段落”。 按3j多选择下3行,或者5k去除当前选中的5行。

o,改变visual mode中光标的移动方向。