引:系统管理员的重要工作就是修改与设置某些重要软件的配置文件,因此至少得到学会一种以上的命令行界面的文本编辑器。在所有的Linux发行版中都具有vi这款编辑器,我们这次学的它的高级版vim。
vi与vim
虽然在Linux在命令行界面下的文本编辑器有很多,比如Emacs,pico,nano,joe与vim等。但是我们却一定要学会vi或者说vim,vim相当于vi的高级版。
为什么要学vim
- 所有的UNIX Like系统都会内置vi文本编辑器,其他文本编辑器不一定存在。
- 所有软件的编辑结构都会主动调用vi(例如crontab,visudo,edquota等)很重要
- vim具有程序编辑能力,可以主动以字体颜色辨别语法的正确性,方便程序设计。
- 程序简单,编辑速度相当快速。
vi的使用
vi分为3种模式,分别是一般模式、编辑模式与命令行模式。它们的作用如下:
- 一般模式:以vi打开一个文件就直接进入一般模式了。在这个模式中,你可以使用左右按键来移动光标,你可以删除字符或删除整行,也可以复制,粘贴你的文件数据。
- 编辑模式:在一般模式中是无法编辑文件内容的。要等到你按下“i,l,o,O,a,A,r,R”等任何一个字母之后才会进入编辑模式。通常在Linux中,按下这些按键时,在界面的左下方会出现INSERT或REPLACE的字样,此时才可以编辑,如果要回到一般模式,必须要按下ESC才可以退出编辑模式。
- 命令行模式:在一般模式中,输入“:、/、?”3个中的任何一个按钮,就可以将光标移动到最下面的那一行。在这个模式当中,可以提供你查找数据的操作,而读取、保存、大量替换字符、离开vi、显示行号等操作就是在此模式中完成的。
vi按键说明
这个按键说明大部分人都会有总结,所以这里也就不再做无用功了,所以贴出下面的链接,遇到问题去查就好了,但是需要保证所有按键都亲自去试一遍!
但是这里我还是想把常用的命令在这里再贴出来,希望能够记住:
- 一般模式可用的按钮说明,光标移动、复制粘贴、查找替换等
按键 | 按键说明 |
---|---|
Ctrl + f | 屏幕『向下』移动一页,相当于 [Page Down]按键 |
Ctrl + b | 屏幕『向上』移动一页,相当于 [Page Up] 按键 |
0 或功能键Home | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键End | 移动到这一行的最后面字符处(常用) |
G | 移动到这个档案的最后一行(常用) |
gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
nEnter | n为数字。光标向下移动 n 行(常用) |
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 server这个字符串,就输入 /vbird 即可! (常用) |
: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 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代 |
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) |
dd | 删除游标所在的那一整列 |
ndd | n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 |
yy | 复制游标所在的那一行 |
nyy | n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列 |
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 |
u | 复原前一个动作 |
Ctrl+r | 重做上一个动作 |
. | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点“.”就好了! |
- 一般模式切换到编辑模式的可用的按钮说明
按键 | 按键说明 |
---|---|
i, I | 进入插入模式(Insert mode):i 为从目前光标所在处插入, I 为在目前所在行的第一个非空格符处开始插入。 |
a, A | 进入插入模式(Insert mode):a为从目前光标所在的下一个字符处开始插入, A 为从光标所在行的最后一个字符处开始插入。 |
o, O | 进入插入模式(Insert mode):这是英文字母 o 的大小写。o 为在目前光标所在的下一行处插入新的一』; O 为在目前光标所在处的上一行插入新的一行! |
r, R | 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止。 |
Esc | 退出编辑模式,回到一般模式中 |
- 一般模式切换到指令列模式的可用的按钮说明
按键 | 按键说明 |
---|---|
:w | 将编辑的数据写入硬盘档案中 |
:q | 离开 vi |
:wq | 储存后离开,若为 :wq! 则为强制储存后离开 |
vim的功能
目前大部分的发行版都以vim替代vi的功能了,如果你使用vi后,却看到界面的右下角有显示目前光标的行列号码,那么你的vi已经被vim替代了,vim相比于vi有许多新的功能。
块操作
vi的操作基本上都是以行为单位的操作,但是vim具有块操作的功能,具体的按键说明如下:
按键 | 按键说明 |
---|---|
v | 字符选择,将光标经过的地方反白选择 |
V | 行选择,将光标经过的行反白选择 |
Ctrl + v | 块选择,可以用长方形选择数据 |
y | 将反白的地方复制 |
d | 删除反白的地方 |
多文件编辑
有事我们需要在一个vim内编辑多个文件,这个时候我们就需要多文件编辑功能,具体按键如下:
按键 | 按键说明 |
---|---|
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 列出目前这个vim打开的所有文件 |
多窗口功能
很多时候我们需要对比文件,但是情况是在同一个vim窗口,这时候也就需要用到多窗口功能,具体按键如下:
按键 | 按键说明 |
---|---|
:sp filename | 打开新窗口,如果有加filename,新窗口打开新文件,否则打开相同文件 |
Ctrl + w + j/↓ | 按键的按法是:先按下Ctrl不放,再按下w后放开所有的按键,然后再按下j或箭头,则光标可移动到下方的窗口 |
Ctrl + w + k/↑ | 同上,但是光标移动到上面的窗口 |
vim常用命令示意图
参考
- 《鸟哥的Linux私房菜》
- Linux - vim按键说明