您当前的位置: 首页 >  vim

liaowenxiong

暂无认证

  • 1浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

vim 编辑器命令整理

liaowenxiong 发布时间:2021-01-29 16:58:05 ,浏览量:1

文章目录
  • 一、基本使用流程
  • 二、普通命令模式
    • (一)切换到插入模式(编辑/写入/输入)
    • (二)切换到可视模式(选择文本模式)
    • (三)切换至底行命令模式
    • (四)替换/修改
      • 1. 切换到替换模式
      • 2. 替换命令
      • 3. 修改替换(删除旧的,输入新的)
    • (五)互换位置
    • (六)字符大小写切换
    • (七)选择文本
    • (八)复制
    • (九)粘贴/恢复
    • (十)删除/剪切
    • (十一)重复前一个操作
    • (十二)标记(其实没啥用)
    • (十三)多行合并
    • (十四)文本行移动/缩进
    • (十五)撤回/撤销
    • (十六)游标移动
      • 1. 以词为单位移动
      • 2. 以字符为单位移动
      • 3. 按句子移动
      • 4. 按段移动
      • 5. 移动游标到匹配字符
      • 6. 查看游标所在行号
    • (十七)跨行移动文本内容/剪切文本内容
    • (十八)屏幕滚动命令
      • 1. 滚屏命令
      • 2. 分页命令
    • (十九)文档状态/统计文档信息
    • (二十)查找/搜索字符串
    • (二十一)查看历史命令
    • (二十二)查看历史搜索记录
    • (二十三)保存退出
    • (二十四)宏录制
    • (二十五)打开光标所在词的使用手册
  • 三、可视模式
    • (一)字符可视模式
      • 1. 选择文本
      • 2. 复制文本
      • 3. 删除文本
      • 4. 修改替换
      • 5. 文本行移动
      • 6. 大小写切换
      • 7. 合并多行
      • 8. 加密文本
      • 9. 保存文本
      • 10. 文本排序
      • 11. 移动光标
      • 12. 切换到插入模式
      • 13. 退出可视模式
    • (二)行可视模式
      • 1. 选择文本
      • 2. 复制文本
      • 3. 删除文本
      • 4. 修改替换
      • 5. 文本行移动
      • 6. 大小写切换
      • 7. 合并多行
      • 8. 加密文本
      • 9. 保存文本
      • 10. 文本排序
      • 11. 移动光标
      • 12. 切换到插入模式
      • 13. 退出可视模式
    • (三)块可视模式
      • 1. 选择文本
      • 2. 复制文本
      • 3. 删除文本
      • 4. 修改替换
      • 5. 文本行移动
      • 6. 大小写切换
      • 7. 合并多行
      • 8. 加密文本
      • 9. 保存文本
      • 10. 文本排序
      • 11. 移动光标
      • 12. 切换到插入模式
      • 13. 退出可视模式
  • 四、底行命令模式
  • 五、插入模式
    • (一)选择文本
    • (二)复制文本
    • (三)粘贴文本/插入寄存器的内容
    • (四)运算表达式
    • (五)删除文本
    • (六)移动文本
    • (七)移动光标
    • (八)临时切换到普通命令模式
    • (九)修改/替换
    • (十)搜索
    • (十一)退出插入模式
    • (十二)自动补全
    • (十三)翻页
  • 六、vim 命令打开文件及选项参数说明
  • 七、寄存器
  • 八、查看 vim 编辑器的帮助文档
Vim 和 Vi 都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 Vi 的所有指令,而且还有一些新的特性在里面。

下面讲解的 vim 功能都是基于以下的系统环境和软件版本:

Linux 内核版本:4.18.0-193.6.3.el8_2.x86_64 Linux 发行版本:CentOS Linux release 8.2.2004 (Core) VIM 版本:8.0.1763   注:查看 vim 的各个选项使用说明:vim -h 或 vim --help;查看 vim 的版本信息:vim -v 或 vim --version

一、基本使用流程

Linux 系统的命令终端中,经常会使用 vi 或者 vim 编辑器编辑文件,基本操作流程如下:

  1. 在命令终端输入 vim /etc/liaowenxiong.txt 打开指定的文件,默认进入 vim 的“普通命令模式”(Normal Mode)
  2. 在“普通命令模式”下输入i 进入编辑界面,也就是 vim 的“插入模式”(Insert Mode)
  3. 编辑好之后按 Esc 返回到 vim 的“普通命令模式”
  4. 按冒号 : 进入 vim 的“底行命令模式”(Last Line Command Mode or Ex Command Mode)
  5. 输入 q! 或者 wq 返回到命令终端(也叫控制器)
二、普通命令模式

normal mode.

vi/vim 的默认模式就是普通命令模式,启动 vi/vim 就进入普通命令模式,在插入模式和底行模式下按 Esc 回到普通命令模式,该模式下常用的命令如下:

(一)切换到插入模式(编辑/写入/输入) 命令说明i切换到插入模式,i在当前游标前(就是游标左边)插入字符I在行首插入a切换到插入模式,a在当前游标后(就是游标右边)插入字符A在行末插入o切换到插入模式,o在当前行后(就是当前行的下面)插入一个新行O在当前行前(就是上面)插入一个新行

技巧: 假如我要一次性输入 30 个等号 =,可以在普通命令模式下,输入:30i=,就是先输入数量 30,接着按 i 切换到插入模式,接着输入 1 个等号 =,最后按 esc 返回普通命令模式,就成功插入 30 个等号 = 啦!这在插入分割线时非常有用哦~

(二)切换到可视模式(选择文本模式) 命令说明v切换到按字选择文本的可视模式,所谓“可视”,就是被选中的字符会“高亮”显示V 或 Shift + v切换到按行选择文本的可视模式,按上下箭头来选择行Ctrl + v切换到按块选择文本的可视模式,按上下左右箭头来选择矩形区域。它选中屏幕上的一个矩形区域。以按下 Ctrl + v 的位置为一个角,光标所在位置为它的对角。 (三)切换至底行命令模式 命令说明:切换到底行模式,可以在最底一行输入命令 (四)替换/修改 1. 切换到替换模式 命令说明R按下大写的 R 键,屏幕左下角出现 --REPLACE--字样,说明你已经处于“替换模式”。此时输入字符可以连续替换光标及其后面的内容。注意:退格键(Backspace)在替换模式中被解释为:如果左边的内容被替换过,则恢复到原来的样子;如果没有被替换过,则光标向左移动。修改完毕后,按下 Esc 键回到“普通命令模式”。若新输入的字符数超过原有对应字符数,则多出部分就附加在后面。#R若在命令 R 之前加上一个数字,例如 5R,则表示新输入的文本重复出现 5 次,但只取代一个被输入文本所覆盖的字符序列,当前行中未被覆盖的内容仍保留下来,只是位置相应右移。这个命令其实没有意义 2. 替换命令 命令说明rr 命令用于替换光标所在位置的字符,具体操作是,先将光标移动到需要替换的字符处,按一下 r 键,然后输入新的字符,就完成了一次替换。再次替换需要再次按下 r 键才可以。注意,全程不会进入插入模式。其实整个操作还是在“普通命令模式”下完成的,所以这个命令并不算是切换到“替换模式”下#r光标所在位置的字符起 # 个字符被 r 后所输入的新字符替换掉 3. 修改替换(删除旧的,输入新的)

文本内容的修改是指在编辑过程中,可以对文本中的某些字符,某些行进行修改,即用新输入的文本代替需要修改的老文本,它等于先用删除命令删除需要修改的内容,然后再利用插入命令插入新的内容。所以在使用修改命令后,vi/vim 进入到“插入模式”下,当输入完新的内容后,再按 Esc 回到“普通命令模式”。

命令说明s该命令表示用随后输入的文本替换当前游标所在的字符。如果只用一个新字符替换游标所在字符,则s命令与r命令功能类似,如shrh的作用都是将游标所在字符变为h。但二者也有区别,r命令是在命令模式下替换,而s命令的工作模式是先删掉游标所在字符后进入插入模式,在插入模式下输入文字完成替换。#s以输入的文本替换光标之后 # 个字符,包含光标所在位置的字符。即用 s 后输入的文本替换从光标所在字符开始及其后的 #-1 个字符(共 # 个字符)S表示用新输入的文本内容替换光标当前行(整行,不管光标位于何列)。输入S后,光标所在行成为空行,切换到“插入模式”,光标停在行的开头#S表示用新输入的文本替换光标所在行及其下面 #-1 行的文本内容。例如 3S,则表示有 3 行(包括光标当前行及其下面 2 行)要被 S 命令之后输入的正文所替换cw输入该命令后,光标所在位置到词尾之间的字符被删除,并切换到“插入模式”,然后可以输入所需要的字符,输入完成之后按 Esc 回到“普通命令模式”,这样就完成了用所输入的内容替换光标位置至词尾的所有文本内容c#w#cw替换游标后面 # 个词,包含游标所在位置的词在内。例如:c6w,就会删除游标后 6 个词,同时切换到插入模式中,接着可以输入新的内容。什么意思呢?就是游标所在位置的词以及后面的 5 个词被删除了,然后切换到插入模式,接着输入的内容就相当于是替换掉被删的 6 个词的内容。c#l#cl修改(改写/替换)游标后的 # 个字母,包含游标所在位置的字符在内。c3jj 表示向下,表示将游标所在行和下面3行都删除,即游标所在行到往下数的第 3 行之间的文本删除,然后进入“插入模式”c3G输入c3G,游标所在行到第 3 行之间的文本删除,然后进入“插入模式”,注意是整个文档的第 3 行c3kk表示向上,表示将游标所在行和上面3行都删除,会进入“插入模式”c$修改从游标当前位置开始到本行末尾范围内的内容,先删除旧内容,进入“插入模式”,再输入新内容完成修改替换CC命令和c$命令相同,可以修改从游标当前位置开始到行尾的内容。#C当在命令C之前加上数字 # 时,表示可以修改指定行数的内容。例如,3C,表示把游标所在位置起之后(注意不是整行)直到下面两个整行的内容删除,替换成随后输入的内容ccS 相同,修改游标所在行(不管游标处于该行的何列)的内容,即先删除光标所在行的文本内容成为空行,再进入“插入模式”,光标会跳到行首准备输入#cccc之前加上数字 #,表示要从游标当前行算起,往后面数,一共修改 # 行的内容。例如,5cc 表示先删除游标所在行及其下面的 4 行,然后输入新的内容#chc#h改写游标前 # 个字符,包含游标所在位置的字符在内 (五)互换位置 命令说明xp光标位置的字符和光标后面一个字符位置互换 (六)字符大小写切换 命令说明~反转光标下字符的大小写gu直接输入 gu 将游标所在行及其下一行的英文字母转成小写gU直接输入 gU 将游标所在行及其下一行的英文字母转成大写guG游标所在行到文档的最后 1 行的英文字母转成小写gu0 或者 gu^游标所在位置到行首的英文字母转成小写,不包含游标所在位置的字符gu$游标所在位置到行尾的英文字母转成小写gU$游标所在位置到行尾的英文字母转成大写gu5k游标所在行及其上面 4 行中的英文字母转成小写,大写同理gu5j游标所在行及其下面 4 行中的英文字母转成小写,大写同理gu3l游标所在位置的字符及其右边的2个字符中的英文字母转成小写,大写同理guH游标当前行至屏幕所显示文本的第 1 行的英文字母转成小写,大写同理gUG游标所在行到文档的最后 1 行的英文字母转成大写guL游标当前行至屏幕所显示文本的最后 1 行的英文字母转成小写,大写同理

总结:往左边的基本不包含游标所在位置的字符,而往右边的基本都会包含游标所在位置的字符

(七)选择文本 命令说明ggvG按下 ggvG ,除了最后一行,选中剩余的全部文本,并进入可视模式下,选中的文本高亮显示ggVG按下 ggVG 才是真正的全选文本,并进入可视模式下,选中的文本高亮显示 (八)复制

Vim 的拷贝与大家预期的方式可能略有不同。拷贝命令不是大家料想的 c。因为 c 表示“修改”,已经被占用了。Vim 用拉取(yank)来表示拷贝,简写为 y。

命令说明yw将游标所在位置的字符到词尾的字符复制到缓冲区中#ywy#w复制游标所在位置的词及其后面的 #-1 个词到缓冲区yy复制游标所在行到缓冲区,所谓的缓冲区就是剪贴板,或者叫寄存器y0从游标所在位置复制到行首y$从游标所在位置复制到行尾#yy例如:6yy表示拷贝从游标所在行往下数6行文字yl复制游标后面的 1 个字符#yly#l复制游标所在位置及其后面 #-1个字符yh复制游标前面的 1 个字符#yhy#h复制游标所在位置及其前面 #-1个字符9,15 copy 169,15 co 169,15 t 16将第 9 行至第 15 行的文本内容,复制到第 16 行的后面9,15 move 169,15 m 16将第 9 行至第 15 行的文本内容,移动(剪切)到第 16 行的后面6 t .把第 6 行复制到当前行下面6 t同上,只是省略了 .. t $把当前行复制到文本末尾t $同上. m $将当前行移动到文本末尾ggyG按下 ggyG 复制全部文本,注意:G 必须大写y1Gygg复制游标所在行及其上面的所有行yG复制游标所在行及其下面的所有行yaw复制游标所在位置的词yiw复制游标所在位置的词,好像和 yaw 效果一样yas复制游标所在位置的句子yit复制游标所在位置的标签的内容。例如:sfd,假设当前游标落在标签 上,那么按下 yit 则会复制 sfdyft复制游标所在行上从游标位置算起到后面第 1 个字符 t 。注意:指定字符也复制yFt复制游标所在行上从游标位置算起到前面第 1 个字符 t 。注意:指定字符也复制ytk复制游标所在行上从游标位置算起到后面第 1 个字符 t 的前一个字符yTk复制游标所在行上从游标位置算起到前面第 1 个字符 t 的后一个字符y/t复制游标所在行上从游标位置算起到后面第 1 个字符 t 之间的文本内容 。注意:指定字符没有被复制 (九)粘贴/恢复 命令操作说明p将缓冲区(寄存器)的内容粘贴到游标所在位置的后面P将缓冲区(寄存器)的内容粘贴到游标所在位置的前面#p粘贴指定的寄存器的内容,常用来恢复被删除的内容,其中 # 为寄存器的名称,详见《vim 的寄存器/剪贴板》 (十)删除/剪切 命令说明x删除游标所在位置的字符,注意此时没有进入“插入模式”,依旧是在“命令模式”下,相当于 dlX删除游标所在位置前面的 1 个字符,相当于 dhShift + x删除游标所在位置前面的 1 个字符#x删除游标所在位置的字符及其右边 #-1 个字符,共计删除 # 个字符。相当于 #dl。例如:6x 表示删除游标所在位置的字符及其后面的 5 个字符,共计删除 6 个字符;即游标所在位置的及其右侧 5 个字符,共计 6 个字符被删除。注意:包含游标所在位置的字符#X表示删除/剪切游标所在位置的字符及其前面 #-1 个字符,共计删除 # 个字符。例如:6X 表示删除游标所在位置的字符以及前面的 5 个字符,共计删除 6 个字符#dhd#h表示删除/剪切游标所在位置的字符及其前面 #-1 个字符,共计删除 # 个字符。#dw删除游标所在位置的词及其后面的 #-1 个词,共计删除 # 个词。例如:输入 3dw,会将游标位置起后面的 3 个词的内容删除,包含游标所在位置的词dw删除从游标位置起到词尾的字符,包含游标所在位置的字符dd删除游标所在的行#dd从游标所在行开始向后删除 # 行,例如:2dd 表示删除游标所在的行以及下面的 1 行,合计删除 2 行;3dd 表示删除游标所在的行,以及下面的 2 行,合计删除 3 行D删除游标所在位置的字符到行尾d$效果和D一样,删除至行尾,游标位置的字符一起删除d0删除(剪切)游标所在位置到行首的内容,游标所在位置的字符保留d^删除至行首,游标所在位置的字符保留dj删除游标所在的行和下面的一行d+回车dj 一样。删除游标所在的行和下面的一行dG删除游标所在行至文档结尾处,游标所在行也删除1dGd1G删除游标所在行至文档开始处,游标所在行也删除dgg删除游标所在行至文档开始处,游标所在行也删除d)删除从光标位置起到本句尾的全部字符,包含光标所在位置的字符d}删除从光标位置起到本段落尾的全部字符,包含光标所在位置的字符dH使用命令 dH 将会删除从“游标所在行”至“屏幕所显示文本的首行”的全部内容,“游标所在行”也删除dM使用命令 dM 将会删除从“游标所在行”至“屏幕所显示文本的中间行”的全部内容,“游标所在行”也删除dl删除游标所在位置的字符,类似 x#dld#l删除游标所在位置的字符及其右边 #-1 个字符,共计删除 # 个字符。dL使用命令 dL 将会删除从“游标所在行”至“屏幕所显示文本的底行”的全部内容,“游标所在行”也删除daw删除游标所在位置的词das删除游标所在位置的句子d/f它将删除当前游标所在位置到下一个字符 f 之间的内容。输入完 d/f 后,要按下“回车键”才行。注意:指定字符保留dfk删除游标所在位置到下一个字符 k。注意:指定字符也删除了dFk删除游标所在位置到上一个字符 k。注意:指定字符也删除了dtk删除游标所在位置到下一个字符 k 的前一个字符。注意:指定字符也删除了dTk删除游标所在位置到上一个字符 k 的后一个字符。注意:指定字符也删除了 (十一)重复前一个操作 命令说明.不要怀疑,这就是小数点,意思是重复前一个动作 (十二)标记(其实没啥用)

使用标记可以快速移动。到达标记后,可以用 Ctrl + o 返回原来的位置,按下 Ctrl + i 游标跳到后一个标记处

命令说明m{a-z}使用小写英文字母标记光标所在位置,这是局部标记,只用于当前文件。貌似标记的名称只能取英文字母或者数字,而且是单个字符。例如:按下 m + a,是指按下 m 键,然后再按 a 键,则表示在光标所在位置打了一个标记,该标记取名为 am{A-Z}使用大写英文字母标记光标所在位置,这是全局标记。标记之后,退出 Vim,重新启动,标记仍然有效`{a-z}游标移动到标记位置。例如:按下撇符号,再按下标记名称 a,游标则会移动到标记 a 所在的字符上。其实打标记,就是给某个字符打标记'{a-z}移动到标记行的行首。例如:按下单引号,再按下标记名称 a,游标就会移动到标记 a 所在的行的行首,这里的行首是指行的第 1 个字符``双撇号,移动到上次编辑的位置。" 也可以,不过 `` 是精确到列,而 " 精确到行 。如果想跳转到更老的位置,可以按 Ctrl + o,跳转到更新的位置用 Ctrl + i`"移动到上次离开的地方`.移动到最后改动的地方 (十三)多行合并 命令说明J合并游标所在行及下一行为一行。合并后留有空格。如果在 J 命令之前给出一个数字n,例如3,则表示把光标当前行及其后面的2行(共3行)合并为一行gJ合并游标所在行及下一行为一行。合并后不留空格 (十四)文本行移动/缩进 命令说明>>将光标所在行右移 8 个空格。如果在 >> 命令之前给出一个数字 n,例如 4,则表示光标当前行及其下面的 3 行(共 4 行)都右移 8 个空格命令相同,只是移动方向相反>G光标所在行至文件末尾之间的所有行向右移动 8 个空格按下 > 被选中的行向右移动8个空格,并返回到“普通命令模式”下 被选中的行向右移动8个空格,并返回到“普通命令模式”下 被选中的行向右移动8个空格,并返回到“普通命令模式”下
关注
打赏
1661566967
查看更多评论
0.0456s