VIM 常用操作

来源:互联网 发布:网络韩语翻译兼职 编辑:程序博客网 时间:2024/06/14 21:56

VIM有一些常用操作非常便捷,记录以备查阅:


块注释

  • 注释:ctrl+v进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后Shift+i,再插入注释符,比如“//“或者”#”,再按Esc,就会全部注释了。
  • 删除:ctrl+v进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d,就会删除注释符号。

搜索

  • 向前搜索:/{pattern} 或者快捷搜索键 * (shift+8):
    需要在当前文件中向前搜索时,有两种方法可以选择,一种是在Normal模式下,在命令行敲搜索命令:/{pattern},其中{pattern}为要搜索的字符串。另一种就是在Normal模式下,将光标移动到待搜索的字符串任意位置,然后按下 * 键(shift+8)。
    在一些情况下还只能使用/命令的方法进行搜索,* 命令是无法实现的,那就是当你要搜索的字符串中有空白字符时。因为 * 命令的搜索模式是自动确定的,只会选择当前光标下的非空白单词,而/命令的搜索模式是手动指定的,就可以包含有空白字符,依然会被作为一个整体进行搜索。

  • 向后搜索:?{pattern} 或者快捷搜索键 #:
    和向前搜索一样,也有两种方法,一种是命令行:?{pattern};一种是快捷按键 #(shift+3),使用的条件和方法和向前搜索是一致的。

  • 继续上一次搜索: 向前 n 向后 N :
    使用上面的搜索命令执行过一次搜索后,光标会跳到相应方向上的第一个匹配模式上,如果想要继续搜索下一个匹配模式,则可以通过按键 n 或者 N来实现。
    n:继续向前进行下一次搜索;
    N: 继续向后进行下一次的搜索。
    当搜索到文件的底部或者顶部时,vim会自动进行循环搜索,因此很方便,可以无需太过关心搜索方向问题。

替换修改

r replace,替换光标下的单字符
R 替换从光标开始,直道按Esc退出替换模式

x 删除当前光标下的字符
X 向前删除一个字符
5x 删除5个字符(包括当前)
5X 向前删除五个字符

d 删除操作
dw 删除一个word,前可加数字代表重复的次数,例如2dw,删除两个word和一些标示位置的字符一起,可以表示删除到指定的位置,eg:
d$ 删除至行尾,
d^ 回删至行头,

D 删除从光标开始至行尾的字符
dd 删除整行
num dd 删除num行 也可以和其他的命令配合起来使用,eg:
dfx 在当前行,删除到x字符,包括x字符
dtx 在当前行,删除至x字符,不包含x
dn Delete up to next occurrence of pattern
dL 删除到屏幕最后一行
dgg 回删到文首
dG 删除到文件最后

c change,修改
C 从当前开始修改到行尾,开始修改时从光标开始后的原始字符全部被删除
cc 修改整行
cw 修改一个word,也可以前加数字前缀,白表修改的次数,例如2cw修改两个word 和一些代表位子的字符配合,代表修改至位置,和d删除一样
c$=C 修改至行尾
c^ 修改至行头

s substitute,修改一个字符,并进入insert模式,和r区别,r修改字符后依然停留在normal模式 S 修改整行,类似cc 4s 修改从当前至后的四个字符

格式化

  • 全局格式化: gg=G
  • 部分格式化: 按v选定后按=就是自动格式化代码,自动缩进,内部的递归的缩进都做到了

移动

  • 上下左右
    h, j, k, l的移动方式,已经成为vim的标志之一,并且也为更多的软件所接受。如果你仍在用上下左右光标来移动的话,说明你内心并没有真正接受vim的哲学,如果真的打算把vim做为你的编辑工具,就从使用h, j, k, l开始吧!
    h, j, k, l分别代表向左、下、上、右移动。如同许多vim命令一样,可以在这些键前加一个数字,表示移动的倍数。例如,”10j“表示向下移动10行;”10l“表示向右移动10列。
    缺省情况下,h和l命令不会把光标移出当前行。如果已经到了行首,无论按多少次h键,光标始终停留在行首,l命令也类似。如果希望h和l命令可以移出当前行,更改‘whichwrap’选项的设置(:help ‘whichwrap’)。

  • 行首/行尾
    在vim中,移动到行首的命令非常简单,就是”0“,这个是数字0,而不是大写字母O。移动到行尾的命令是”$“。
    另外还有一个命令”^“,用它可以移动到行首的第一个非空白字符。

  • 在文件中移动
    命令”gg“移动到文件的第一行,而命令”G“则移动到文件的最后一行。
    命令”G“前可以加上数字,在这里,数字的含义并不是倍数,而是你打算跳转的行号。例如,你想跳转到文件的第1234行,只需输入”1234G“。

  • 翻页
    在vim中翻页,同样可以使用PageUp和PageDown,不过,像使用上下左右光标一样,你的手指会移出主键盘区。因此,我们通常使用CTRL-B和CTRL-F来进行翻页,它们的功能等同于PageUp和PageDown。CTRL-B和CTRL-F前也可以加上数字,来表示向上或向下翻多少页。

  • 移动到指定字符
    “f“命令移动到光标右边的指定字符上,例如,”fx“,会把移动到光标右边的第一个’x’字符上。”F“命令则反方向查找,也就是移动到光标左边的指定字符上。
    “t“命令和”f“命令的区别在于,它移动到光标右边的指定字符之前。例如,”tx“会移动到光标右边第一个’x’字符的前面。”T“命令是”t“命令的反向版本,它移动到光标右边的指定字符之后。
    这四个命令只在当前行中移动光标,光标不会跨越回车换行符。
    可以在命令前面使用数字,表示倍数。例如,”3fx“表示移动到光标右边的第3个’x’字符上。
    “;“命令重复前一次输入的f, t, F, T命令,而”,“命令会反方向重复前一次输入的f, t, F, T命令。这两个命令前也可以使用数字来表示倍数。

  • 按单词移动
    英文文档的主体是单词,通常用空白字符(包括空格、制表符和回车换行符)来分隔单词。vim中提供了许多命令来按单词移动。
    要根据单词来移动,首先要把文本分隔为一个个独立的单词。vim在对单词进行分隔时,会把’iskeyword‘选项中的字符做为单词的组成字符。也就是说,一个单词(word)由’iskeyword‘选项中定义的字符构成,它前面、后面的字符不在’iskeyword‘选项定义的字符中。例如,如果我们把’iskeyword‘选项设置为”a-z,A-Z,48-57,“,那么”FooBar_123“被做为一个单词,而”FooBar-123“被做为三个单词:”FooBar“, “–“和”123“。”a-z,A-Z,48-57,“中的48-57表示ASCII码表中的数字0-9。
    vim中,移动光标到下一个单词的词首,使用命令”w“,移动光标到上一个单词的词首,使用命令”b“;移动光标到下一个单词的结尾,用命令”e“,移动光标到上一个单词的结尾,使用命令”ge“。
    上面这些命令都使用’iskeyword‘选项中的字符来确定单词的分界,还有几个命令,只把空白字符当做”单词“的分界。当然,这里说的”单词“已经不是传统意义上的单词了,而是由非空白字符构成一串字串。命令”W“移动光标到下个字串的开始,命令”B“移动到上个字串的开始;命令”E“移动到下个字串的结尾,命令”gE“移动到上个字串的结尾。

参考:
http://easwy.com/blog/archives/advanced-vim-skills-catalog/

0 0