vi/vim
作为Linux
开发工具之一,从它的键盘操作图也可以知道,它的操作不会很简单,但如果我们认真学习的话,想熟练地使用也不会很难!
vi/vim
的区别简单点来说,它们都是多模式编辑器,不同的是vim
是vi
的升级版本,它不仅兼容vi
的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window
、mac os
、windows
。
vim
编辑器有很多种模式,我们目前掌握命令模式(command mode)
、插入模式(insert mode)
和底行模式(last line mode)
- 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode
下,或者到last line mode
;vim编辑器默认进入命令模式,该模式不能写代码,需要转换到插入模式,此时可以按a\s\i\o
其中一个键可以从命令模式转换到插入模式
- 插入模式(Insert mode)
只有在Insert mode
下,才可以做文字输入,按「ESC」
键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。- 末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+;(其实为:)
即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes
,输入: w
(保存当前文件),输入: wq
(存盘并退出vim),输入: q!
(输入q!,不存盘强制退出vim),输入:wq!
(强制保存并退出该文件)
- 按
「a」
进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;- 按
「s」
进入插入模式后,删除光标所在位置的字符,从删除字符的位置开始输入字符。- 按
「i」
切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;- 按
「o」
进入插入模式后,是插入新的一行,从行首开始输入文字;
我们提前编辑好一段代码,统一让光标在如下位置,观察以不同方式进入插入模式的效果
按「a」
切换进入插入模式
按「s」
进入插入模式后
按「i」
切换进入插入模式
按「o」
进入插入模式后>
按
「ESC」
键后,即可从插入模式转换为命令模式
- vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、
「l」,分别控制光标左、下、上、右移一格
接下来以该光标位置为基准,进行按键学习
[gg]
键:进入到文本行开始「G」
(即shift+g
):移动到文本行末尾「nG」
(即n+shift+g
):光标定位到任意行「 $ 」
(即shift+$键
):移动到光标所在行的行尾。+ 「^」
(即shift+^
):移动到光标所在行的“行首”
- 按「
w
」:光标跳到下个字的开头- 按「
b
」:光标回到上个字的开头- 按「
e
」:光标跳到下个字的字尾- 按「
nl
」:光标移到该行的第n个位置(n为数字)- 按「
ctrl
」+「b
」:屏幕往“后”移动一页(即向上移动一页)- 按「
ctrl
」+「f
」:屏幕往“前”移动一页(即向下移动一页)- 按「
ctrl
」+「u
」:屏幕往“后”移动半页(即向上移动半页)- 按「
ctrl
」+「d
」:屏幕往“前”移动半页(即向下移动半页)
- 「
x
」:每按一次,删除光标所在位置的一个字符- 「
#x
」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符- 「
X
」:大写的X,每按一次,删除光标所在位置的“前面”一个字符- 「
#X
」:例如,「20X」表示删除光标所在位置的“前面”20个字符- 「
dd
」:删除光标所在行- 「
#dd
」:从光标所在行开始删除#
行。
注意:这里的#
表示数字(0、1、2...
),不是表示字符
- 「
yw
」:将光标所在之处到字尾的字(文字、单词)复制到缓冲区中。- 「
#yw
」:复制#个字(文字、单词)到缓冲区。- 「
yy
」:复制光标所在行到缓冲区。- 「
#yy
」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。- 「
p
」:将缓冲区内的字符贴到光标所在位置。- 「
#p
」:将缓冲区内的字符粘贴#份到光标所在位置的下一行
注意:所有与“y”
有关的复制命令都必须与“p”
配合才能完成复制与粘贴功能;「#dd
」为剪切功能,配合“p”
配合也可以完成复制配合的功能。
- 「
~
」(即shift+~
):将光标所在位置的字符进行大小写转换。- 「
r
」:替换光标所在处的字符。- 「
R
(即shift+r
):替换光标所到之处的字符,直到按下「ESC
」键为止。该模式为vim
的替换模式!
- 「
u
」:如果您误执行一个命令,可以马上按下「u
」,回到上一个操作。按多次“u”可以执行多次回复。- 「
ctrl + r
」:撤销的恢复(反撤销)
- 「
cw
」:更改光标所在处的字到字尾处。- 「
c#w
」:例如,「c3w
」表示更改3个字(文字、单词)。
- 「
ctrl
」+「g
」:列出光标所在行的行号。- 「
#G
」:例如,「15G
」,表示移动光标至文章的第15行行首。
在使用末行模式之前,请记住先按「ESC」
键确定您已经处于正常模式,再按「:」
冒号即可进入
- 列出行号
「set nu
」:输入「set nu
」后,会在文件中的每一行前面列出行号。
「set nonu
」:取消行号设置。
- 跳到文件中的某一行
「#
」:「#
」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如 再回车,就会跳到文章的第15行。- 查找字符
「/关键字
」: 先按「/」
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要「n」
会往后(适合从顶部向下)寻找到您要的关键字为止。
「?关键字
」:先按「?」
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要按「n」
会往前(适合从底部往上)寻找到您要的关键字为止。- 保存文件
「w
」: 在冒号输入字母「w
」就可以将文件保存起来- 离开
vim
「q
」:按「q
」就是退出,如果无法离开vim,可以在「q
」后跟一个「!
」强制离开vim
。
「wq
」:一般建议离开时,搭配「w
」一起使用,这样在退出的时候还可以保存文件。- 多文件切换
vs + 文件名
,打开多文件编辑窗口,如果该文件存在,直接打开文件进行编辑;如果文件不存在,创建文件后再进行编辑。
ctrl+ww
,光标在多文件窗口切换。vim
编辑器中使用外部命令
「!+外部指令
」,使用英文感叹号加上指令,可以在不退出vim
编辑器的情况下,使用外部指令,按Enter键
(回车键)可以回到vim
编辑器中进行输入命令!
本章我们一起学习了,vim编辑器的三种模式:命令模式、插入模式、底行模式,这三种模式的关系如下: