【Linux系统】vim编辑器的使用
文章目录
- 一、vim编辑器的简单介绍
- 二、vim的一键化配置方案(目前只支持 Centos7 x86_64)
- 三、vim编辑器在各模式下的操作
- 1.vim的使用 以及 各模式间的切换
- 2.普通模式(Normal Mode,初始默认处于该模式)
- 3.替换模式(Replace Mode) 和 插入模式(Insert Mode)
- 4.视图模式(Visual Block Mode)
- 5.命令行模式(Command Mode)
一、vim编辑器的简单介绍
- Linux下的Vim编辑器是一款功能强大的多模式文本编辑器,其核心特点是通过不同模式实现高效编辑。 Vim包含三种主要模式:
- 普通模式(Normal Mode):默认进入的模式,用于文本导航、复制/粘贴等操作(按
Esc
返回此模式) - 插入模式(Insert Mode):在普通模式下按
i
/a
/o
等键进入,可直接编辑文本 - 命令行模式(Command Mode):在普通模式下按
shift+;
(相当于:)进入,支持保存文件、退出等指令,也可以进行内容替换,找字符串,列出行号等操作
- 再补充两个常用模式:
-
替换模式(Replace Mode):在普通模式下按
shift+r
(相当于 R)进入。替换光标所在处的字符,逐个替换光标会自动后移,直到按下「ESC」键退出替换模式为止。 -
视图模式(Visual Block Mode):在普通模式下按「ctrl + v」进入。视图模式下可以进行批量化操作。
Vim编辑器其实有好多种模式,但基本上掌握以上5种模式就足够使用。
在命令行模式下,输⼊「help vim-modes」 ,可以查看vim编辑器的所有模式。
二、vim的一键化配置方案(目前只支持 Centos7 x86_64)
-
在gitee搜索开源项目vimforcp:
-
点进这个项目下翻到项目简介:
第一步(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令。不要在 root 下执行):
[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
第二步(按照提示输入 root 密码):
第三步(等待安装成功之后,再输入 “source ~/.bashrc”,使 vim 配置生效):
[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ source ~/.bashrc
三、vim编辑器在各模式下的操作
1.vim的使用 以及 各模式间的切换
- vim的使用语法:
(1) vim 文件名(打开指定文件时,光标会停在上次退出该文件时停留的位置):
[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ ls -l
total 4
-rw-rw-r-- 1 zh zh 373 May 4 15:59 code.c
[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ vim code.c
(2)vim 文件名 +行号(打开指定文件时,光标会默认停在指定行):
[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ vim code.c +10
- vim下各模式间的切换(vim打开文件时,初始默认处于普通模式)
2.普通模式(Normal Mode,初始默认处于该模式)
- 控制光标的移动:
• vim可以直接用键盘上的方向键来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移⼀格
• 「#h」、「#j」、「#k」、「#l」,分别控制光标左、下、上、右移 # 格
• 「 $ 」:移动到光标所在行的“行尾”
• 「^」:移动到光标所在行的“行首”
• 「w」:光标跳到下个 “单词” 的开头
• 「#w」: 光标跳到下第 # 个 “单词” 的开头
• 「b」:光标回到上个 “单词” 的开头
• 「#b」:光标回到上第 # 个 “单词” 的开头
• 「gg」:光标移动到文本首行开头
• 「shift+g」:光标移动到文本尾行开头
• 「n + shift+g」:光标移动到文本第 n 行开头
• 「ctrl + b」:屏幕往“后”移动一页
• 「ctrl + f」:屏幕往“前”移动一页
// # 代表数字
- 删除内容:
• 「x」:每按⼀次,删除光标所在位置的⼀个字符
• 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
• 「X」:大写的X,每按⼀次,删除光标所在位置的“前面”⼀个字符
• 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
• 「dd」:删除光标所在行
• 「#dd」:从光标所在行开始删除 # 行
- 剪切功能:
•「dd」+ 「p」:剪切一行
•「#dd」+ 「p」:剪切 # 行
- 复制粘贴:
• 「yy」:复制光标所在行到缓冲区。
• 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
• 「p」:将缓冲区内的字符粘贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
• 「#p」:将缓冲区内的字符从光标所在位置往后粘贴 # 次。
- 查找光标处于的 “单词”:
• 「shift+#」:在文本中查找光标处于的 “单词”。(n:跳转到下一个;N:跳转到上一个)注意:此处的 ‘#’ 是字符,不指代数字
- 撤销和恢复:
• 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
• 「ctrl + r」: 撤销的恢复(对「u」操作进行撤销)
- 替换字符:
• 「r」:替换光标所在处的字符(输入 r 后,再输入替换后的字符)。
• 「#r」:把光标所在处往后的 # 个字符替换为同一个字符(输入 #r 后,再输入替换后的字符)。
- 字母大小写替换:
• 「shift+`」(相当于 ~):从光标位置开始进行字母的大小写替换(长按可以一直替换到行尾)
3.替换模式(Replace Mode) 和 插入模式(Insert Mode)
- 在普通模式下,按「shift+r」(相当于 R)切换成替换模式(Replace Mode)。
替换模式:替换光标所在处的字符,逐个替换光标自动后移,直到按下「ESC」键退出替换模式为止。
- 在普通模式下,按
i
/a
/o
等键均可切换成插入模式(Insert Mode),可直接编辑文本
// 按o
进入插入模式时会另起一行
进入插入模式后,各种命令都无效了,因为全都被视为字符输入到文本内容中。
光标移动只能使用上下左右方向键。
4.视图模式(Visual Block Mode)
在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。视图模式下可以进行批量化操作。
- 同时在多行文本内容前(或 后)添加指定内容(以批量化注释为例):
(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)
(2)控制光标移动选定区域(普通模式下控制光标移动的方式中除了方向键控制外,均可以使用)
(3)区域选定结束后,按「shift + i」(相当于 I)切换成到插入模式(在选定内容前添加指定内容)
注: 按「shift + a」(相当于 A)切换成到插入模式是在选定内容后添加指定内容
(4)进入插入模式后,写入内容(因为我想实现批量化注释,所以写入了 // )
(5)写入内容之后,按「ESC」键退出插入模式,这时会发现在视图模式下选定的所有行前都添加了 // 内容
- 指定区域删除(以批量化去注释为例):
(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域
(2)选定区域之后,按「d」进行删除,删除后会自动退出到普通模式
- 指定区域内容替换(替换成同一个字符):
(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域
(2)选定区域之后,先按「r」,再输入想替换成的字符(例:示例中输入了 a)。替换后会自动退出到普通模式
- 复制指定区域内容:
(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域
(2)选定区域之后,按下「y」复制指定区域内容。复制后会自动退出到普通模式
(3)移动光标到目标位置,按「p」粘贴
- 指定区域内容中字母大小写替换:
(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域
(2)选定区域之后,按「shift+`」(相当于 ~)对指定区域内容中字母大小写进行替换。替换后会自动退出到普通模式
5.命令行模式(Command Mode)
在普通模式下,按「shift+;」(相当于 :)切换成命令行模式(Command Mode)。一定要先切换到命令行模式,才能执行下面的指令:
- 保存文件 和 退出文件的操作:
• 「w」: 在冒号输入字母「w」就可以将文件保存起来
• 「q」:按「q」就是退出文件。如果无法离开vim(一般就是文件编辑之后没有保存),可以在「q」后跟⼀个「!」强制离开vim(会导致编辑后未保存的内容恢复为原来内容)。
• 「wq」:⼀般建议离开时,搭配「w」⼀起使用,这样在退出的时候还可以保存文件。
• 「!」:强制执行。「w」、「q」和「wq」后都可以跟「!」
- 列出行号 和 取消行号:
• 「set nu」:输⼊「set nu」后,会在文件中的每一行前面列出行号。
• 「set nonu」:输⼊「set nonu」后,会取消文件中的每一行前面的行号。
- 跳到文件中的某⼀行:
• 「#」:# 号表示⼀个数字,在冒号后输入⼀个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
- 查找字符串:
• 「/字符串」: 先按「/」键,再输入您想寻找的字符串,如果第⼀次找的字符串不是您想要的,可以⼀直按「n」会往后寻找到您要的字符串为止。
• 「?字符串」:先按「?」键,再输⼊您想寻找的字符串,如果第⼀次找的字符串不是您想要的,可以⼀直按「n」会往前寻找到您要的字符串为止。
- 替换字符串:
• 「s/原字符串/目标字符串/」:可以对光标所在的行第一个匹配的原字符串进行替换
• 「s/原字符串/目标字符串/g」:可以对光标所在的行所有匹配的原字符串进行替换
• 「%s/原字符串/目标字符串/g」:可以替换整个文件中所有匹配的原字符串
• 「%s/原字符串/目标字符串/cg」:如果你不想直接替换所有的匹配项,而是希望在每次替换时都进行确认,可以使用这个命令。这样在替换过程中, Vim 会弹出提示,询问你是否要替换每一个匹配的字符串,根据你可以需要输入 y(是)、n(否)等命令来决定是否替换。
- vim的命令行模式可以当linux命令行输入linux命令:
•「!命令」:先输入「!」,紧接着就可以输入linux命令并执行了。执行完毕后按任意键返回vim的普通模式
示例演示(在vim的命令模式执行 ls -l 命令行命令):
第一步(在命令模式输入 !ls -l ,再按回车执行该命令)
第二步(执行完毕后按任意键返回vim的普通模式)