学习笔记:vim基础 ―― 命令行备忘录
Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
标签(空格分隔): 前端
缘由:又一次被队友吐槽: 咋连vim都不会用 ?!~( %o□%p )~。。。这就尴尬了,于是赶紧找一波资料,做一下笔记,方便下次查找和理解。
一. vim的三种模式vim共有三种模式,分别是 一般模式 、 编辑模式 和 命令行模式 。这三种模式分别如下:
1.1 一般模式以vim打开一个文件就直接进入一般模式(默认模式)。在该模式下,可以使用上下左右按键来移动光标,可以删除字符或删除整行,也可以复制粘贴文件数据。但是无法编辑文件内容。
1.2 编辑模式在一般模式下,按下“ i 、 I 、 o 、 O 、 a 、 A 、r 、 R ”中任何一个字母之后,才会进入编辑模式。
通常在linux系统中,按下这些按键时,在界面的左下方会出现INSERT或REPLACE的字样,才可以进行编辑。如果要回到一般模式时,则必须按下 【Esc】 才可退出编辑模式。
1.3 命令行模式在一般模式下,输入“ : 、 / 、 ? ”中任何一个字母之后,就可以就进入命令行模式,并将光标移动到界面左下方。在这个模式下,可以提供你查找数据的操作,如读取、保存、替换大量字符串、离开vim、显示行号等。
这三个模式的切换如下图所示:
Image may be NSFW.
Clik here to view.

可见,一般模式与编辑模式及命令行模式可相互切换,但编辑模式与命令行模式之间不可相互切换。
二. 按键说明 2.1 一般模式切换到编辑模式,可用的按键如下: 按键 说明 i, I 进入 插入 模式:i为目前光标所在处插入;I为目前所在行的第一个非空格符处开始插入(常用)。 a, A 进入 插入 模式:a为目前光标所在的下一个字符处开始插入;A为从光标所在行的最后一个字符处开始插入(常用)。 o, O 进入 插入 模式:o为目前光标所在的下一行处插入新的一行;O为目前光标所在哈你给的上一行插入新的一行(常用)。 r, R 进入 替换 模式:r只会替换光标所在的那一个字符一次;R会一直替换光标所在的文字,直到按下[Esc]键为止(常用)。 2.2 一般模式切换到命令行模式,可用的按键如下: 按键 说明 :w 将编辑的数据写入文件中。 :w! 若文件属性为“只读”时,强制写入该文件。能否写入成功,还与用户对该文件的文件权限有关。 :q 离开vim。 :q! 强制离开vim,不保存文件。 :wq 强制保存后离开vim。 ZZ 若文件没改动,则不保存离开;若文件被改动,则保存后离开。 :w[filename] 将编辑的数据保存成另一个文件(另存为)。 :r[filename] 将[filename]这个文件的内容追加到光标所在行之后。 :n1, n2 w[filename] 将n1到n2行的内容保存成[filename]这个文件。其中n1、n2为Int类型。 :!command 暂时离开vim到命令行模式下执行command的显示结果。 :set nu 显示行号。 :set nonu 取消行号。 2.3 一般模式下可用的按键: 2.3.1 光标的小范围移动: 按键 说明 k 上移。 j 下移。 h 左移。 l 右移。如果想要进行多次移动的话,加上想要进行的次数后,进行光标大的移动操作即可。例如向下移动30行,可以使用”30j”或”30↓”的组合按键。
2.3.2 光标在前后页移动: 按键 说明 Ctrl + f 在文件中前移一页(相当于 [Page Down])。(常用) Ctrl + b 在文件中后移一页(相当于 [Page Up])。(常用) Ctrl + d 屏幕向下移动半页。 Ctrl + u 屏幕向上移动半页。 2.3.3 行内光标移动: 按键 说明 w 右移光标到下一个字的开头。 e 右移光标到一个字的末尾。 b 左移光标到前一个字的开头。 0 数字0,左移光标到本行的开始。(常用) $ 右移光标,到本行的末尾。(常用) ^ 移动光标,到本行的第一个非空字符。 2.3.4 页内快速移动光标: 按键 说明 G 将光标定位到文件最后一行起始位置(常用)。 NG 或 Ngg 将光标定位到第 N 行的起始位置。 gg 将光标定位到文件第一行起始位置,相当于1G(常用)。 H 将光标移到屏幕上的起始行(第一行)。 M 将光标移到屏幕中间。 L 将光标移到屏幕最后一行。 N[Enter] 光标向下移动N行(常用)。 n[Enter] 光标向右移动N个字符。 + 光标移动到非空格符的下一行。 光标移动到非空格符的上一行。 2.3.5 查找与替换 按键 说明 /word 向下查找一个名为”word”的字符串。(常用) ?word 向上查找一个名为”word”的字符串。 n 这个n是英文按键。表示重复前一个查找的操作。 N 这个N是英文按键。与n刚好相反,为“反方向”重复前一个查找操作。使用/word配合n及N,可以重复地找到一些关键字:
按键 说明 :n1,n2s/word1/word2/g n1和n2为数组。表示在第n1与n2行之间寻找word1这个字符串,并将其替换为word2。(常用) :1,\$s/word1/word2/g 表示在第一行到最后一行之间寻找word1这个字符串,并将其替换为word2。(常用) :1, \$s/word1/word2/gc 表示在第一行到最后一行之间寻找word1这个字符串,并将其替换为word2。且在替换前显示提示字符给用户确认是否需要替换。(常用) 2.3.6 删除: 按键 说明 x, X x为向后删除一个字符(相当于[Del]键);X为向前删除一个字符(相当于[Backspace])。(常用) nx 删除光标所指向的前 n 个字符。 dd 删除光标所在行,并去除空隙。(常用) ndd 删除(剪切) n 行内容,并去除空隙。(常用) d0 删除光标所在处到该行的最前面一个字符。 d$ 删除从那个光标所在处到该行的最后一个字符。 dG 删除从光标所在处到最后一行的所有数据。 d1G 删除从光标所在处到第一行的所有数据。 2.3.7 复制: 按键 说明 yy 复制当前行。(常用) nyy 复制光标所在的向下n行。(常用) y1G 复制光标所在行到第一行的所有数据。 yG 复制光标所在行到最后一行的所有数据。 y0 复制光标所在行到该行行首的所有数据。 y$ 复制光标所在行到该行行尾的所有数据。 2.3.8 粘贴: 按键 说明 p, P p表示将已复制的数据粘贴到光标下一行;P表示为粘贴在上一行。(常用) 2.3.9 撤销和重复 按键 说明 u 复原前一个操作。(常用) Ctrl + r 重做上一个操作。(常用) . 重复前一个操作。(常用) 3. vim常用命令示意图Image may be NSFW.
Clik here to view.

【备注:上图转载自《鸟哥的私房菜》P289】
4. 参考: 《鸟哥的Linux私房菜》 http://linux.vbird.org/linux_basic/0310vi.php 《VIM用户手册》 http://vimcdoc.sourceforge.net/vim_user_manual_603.0.pdf