1、移动光标

移动光标的时候,可以通过上下左右的方向键来操作,但是这样有点慢,下图说明了一些 vim 下比较常用的快捷键使用方法, 空格键也是向右移动的快捷键,还可以通过数字来控制它的位置。例如先按下数字5,再按空格键的话,光标就会直接向右移动5个字符。h、j、k、l 这些快捷键也都支持使用数字来控制光标移动的数量。

2、vim 一般模式下移动光标的快捷方式

字符移动 h,j,k,l 左下上右 行内移动 w 正向移动到相邻单词的首字符 b 逆向移动到相邻单词的首字符 B 向前一个单词,以空格和TAB为分隔符 e 正向移动到相邻单词的尾字符 ge 逆向移动到相邻单词的尾字符 0 数字0,左移光标到本行的开始; Shift + 6 ,左移光标到本行的开始; Shift + 4 ,右移光标到本行的末尾; $ 右移光标,到本行的末尾; ^ 移动光标,到本行的第一个非空字符 页移动 H 跳转到当前屏幕的第一行 M 跳转到本屏显示的中间一行 L 跳转到最后一行 2H 表示将光标移到屏幕的第2行 3L 表示将光标移到屏幕的倒数第3行 z + enter 是当前行成为屏幕的第一行 z + - 是当前一行成为最后一行 ctrl + f 在文件中前移一页(或 page down); ctrl + b 在文件中后移一页(或 page up); ctrl + d 往下滚动半屏 ctrl + u 往上滚动半屏 文件移动 gg 跳到首行 G 即 Shift +g ,跳到尾行 nG 跳转到n行,n 是任意数字,其中右下角也可以看到光标的位置,见下图, % 跳到另一边括号 配合查找字符的方式移动 fa 正向移动到第一个字符 a 处 Fa 逆向移动到第一个字符 a 处 非相邻的单词或字符间移动 8w 正向移动到相隔八个单词的首字符 4Fa 逆向移动到第四个 a 字符 更大范围的移动 当光标停留在一个单词上,* 键会在文件内搜索该单词,并跳转到下一处; “ # ”当光标停留在一个单词上,“ # ”在文件内搜索该单词,并跳转到上一处; (/) 移动到 前/后 句 的开始; {/} 跳转到 当前/下一个 段落 的开始。 g 到本行最后一个不是 blank 字符的位置。 fa 到下一个为 a 的字符处,你也可以fs到下一个为s的字符。 t, 到逗号前的第一个字符。逗号可以变成其它字符。 3fa 在当前行查找第三个出现的 a。 F/T 和 f 和 t 一样,只不过是相反方向; gg 将光标定位到文件第一行起始位置; G 将光标定位到文件最后一行起始位置; NG或Ngg 将光标定位到第 N 行的起始位置

3、复制剪切粘贴

替换和删除 Vim常规的删除命令是 d、 x (前者删除 行 ,后者删除 字符 ),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行 gg dG 删除全部内容 d0 删除至行首 dl 删除当前字符, dl=x dh 删除前一个字符 dd 删除当前行 dj 删除上一行 dk 删除下一行 dw 删除到下一个单词开头 de 删除到本单词末尾 dE 删除到本单词末尾包括标点在内 db 删除到前一个单词 dB 删除到前一个单词包括标点在内 10d 删除当前行开始的10行 d$ 删除当前字符之后的所有字符(本行) D 删除当前字符至行尾。D=d$ kd gg 删除当前行之前所有行(不包括当前行) jdG 删除当前行之后所有行(不包括当前行) :1,10d 删除1-10行 :11,$d 删除11行及以后所有的行 :1,$d 删除所有行 J 删除两行之间的空行,实际上是合并两行 rc 用 c 替换光标所指向的当前字符; nrc 用 c 替换光标所指向的前 n 个字符; 5rA 用 A 替换光标所指向的前 5 个字符; x 删除光标所指向的当前字符; nx 删除光标所指向的前 n 个字符; 3x 删除光标所指向的前 3 个字符; dw 删除光标右侧的字; ndw 删除光标右侧的 n 个字; 3dw 删除光标右侧的 3 个字; db 删除光标左侧的字; ndb 删除光标左侧的 n 个字; 5db 删除光标左侧的 5 个字; dd 删除光标所在行,并去除空隙;一次只能剪切一行 ndd 删除(剪切) n 行内容,并去除空隙; 3dd 删除(剪切) 3 行内容,并去除空隙; Vim常规的替换命令有 c 和 s ,结合Vim的其他特性可以实现基础的替换功能,不过替换命令执行以后,通常会由 编辑模式 进入 插入模式 s 用输入的正文替换光标所指向的字符; S 删除当前行,并进入编辑模式; ns 用输入的正文替换光标右侧 n 个字符; nS 删除当前行在内的 n 行,并进入编辑模式; cw 用输入的正文替换光标右侧的字; cW 用输入的正文替换从光标到行尾的所有字符(同 c$ ); ncw 用输入的正文替换光标右侧的 n 个字; cb 用输入的正文替换光标左侧的字; ncb 用输入的正文替换光标左侧的 n 个字; cd 用输入的正文替换光标的所在行; ncd 用输入的正文替换光标下面的 n 行; c$ 用输入的正文替换从光标开始到本行末尾的所有字符; c0 用输入的正文替换从本行开头到光标的所有字符。 复制粘贴 yy 拷贝当前行 nyy 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行 *“+y 复制 1 行到操作系统的粘贴板 *“+nyy 复制 n 行到操作系统的粘贴板 :1,10 co 20 将1-10行插入到第20行之后 :1,co 将整个文件复制一份并添加到文件尾部 正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按y即可复制 ddp 交换当前行和其下一行 xp 交换当前字符和其后一个字符 正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按d即可剪切 ndd 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴 :1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。 :1, 10 m 20 将第1-10行移动到第20行之后。 x 剪切当前字符,即向后删除一个字符 3x 剪切当前光标开始向后三个字符, X 剪切当前字符的前一个字符,即向前删除一个字符。X=dh p (小写p)粘贴到下一行或右侧,修改和删除的数据自动到粘贴板中 P (大写P)粘贴到上一行或左侧 不规则剪切粘贴,可以先按 v 进入 visual mode 可视界面,通过上下左右方向键选中要替换的单词,再按小写 x 剪切,按小写 p 粘贴即可。 yiw (yank inner word)在一个单词的任意字母使用,就复制该单词 yw 则只是复制从光标所在字母到词尾的部分 撤销和重复 u 撤销最近一次修改 undo;一次恢复一个操作,最多恢复50次。恢复到最原始的操作之后,左下角会出现文字“已位于最旧的改变”。 . 重复最后一条修改正文的命令 U 撤销所有修改 Ctrl + r 取消最后一次的撤销 redo 块编辑 v 可进入visual模式,使用标准快捷键移动光标可选择文本块,之后可输入标准编辑命令 ctrl + v 列编辑 行尾块…

插入模式 进入 i 在当前位置生前插入 I 在当前行首插入 a 在当前位置后插入 A 在当前行尾插入 o 在当前行之后插入一行 O 在当前行之前插入一行 s 删掉当前字符,并进行输入 x 删掉当前字符,停留在Normal模式 退出 Esc ctrl + O 暂时性的 ctrl + C 取消当前的任何操作 ctrl + [ 官方推荐替换Esc 移动光标 尽量不要进入插入模式移动光标 ctrl + H 光标移当前行行首 imap ctrl + J 光标移下一行行首 imap ctrl + K 光标移上一行行尾 imap ctrl + L 光标移当前行行尾 imap Alt + H 光标左移一格 imap Alt + J 光标下移一格 imap Alt + K 光标上移一格 imap Alt + L 光标右移一格 imap