走进Linux_学会使用vim程序编辑器

引:系统管理员的重要工作就是修改与设置某些重要软件的配置文件,因此至少得到学会一种以上的命令行界面的文本编辑器。在所有的Linux发行版中都具有vi这款编辑器,我们这次学的它的高级版vim。

vi与vim

虽然在Linux在命令行界面下的文本编辑器有很多,比如Emacs,pico,nano,joe与vim等。但是我们却一定要学会vi或者说vim,vim相当于vi的高级版。

为什么要学vim

  1. 所有的UNIX Like系统都会内置vi文本编辑器,其他文本编辑器不一定存在。
  2. 所有软件的编辑结构都会主动调用vi(例如crontab,visudo,edquota等)很重要
  3. vim具有程序编辑能力,可以主动以字体颜色辨别语法的正确性,方便程序设计。
  4. 程序简单,编辑速度相当快速。

vi的使用

vi分为3种模式,分别是一般模式、编辑模式与命令行模式。它们的作用如下:

  1. 一般模式:以vi打开一个文件就直接进入一般模式了。在这个模式中,你可以使用左右按键来移动光标,你可以删除字符或删除整行,也可以复制,粘贴你的文件数据。
  2. 编辑模式:在一般模式中是无法编辑文件内容的。要等到你按下“i,l,o,O,a,A,r,R”等任何一个字母之后才会进入编辑模式。通常在Linux中,按下这些按键时,在界面的左下方会出现INSERT或REPLACE的字样,此时才可以编辑,如果要回到一般模式,必须要按下ESC才可以退出编辑模式。
  3. 命令行模式:在一般模式中,输入“:、/、?”3个中的任何一个按钮,就可以将光标移动到最下面的那一行。在这个模式当中,可以提供你查找数据的操作,而读取、保存、大量替换字符、离开vi、显示行号等操作就是在此模式中完成的。

vi按键说明

这个按键说明大部分人都会有总结,所以这里也就不再做无用功了,所以贴出下面的链接,遇到问题去查就好了,但是需要保证所有按键都亲自去试一遍!

Linux - vim按键说明

但是这里我还是想把常用的命令在这里再贴出来,希望能够记住:

  1. 一般模式可用的按钮说明,光标移动、复制粘贴、查找替换等
按键 按键说明
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 重做上一个动作
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点“.”就好了!
  1. 一般模式切换到编辑模式的可用的按钮说明
按键 按键说明
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 退出编辑模式,回到一般模式中
  1. 一般模式切换到指令列模式的可用的按钮说明
按键 按键说明
: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常用命令示意图

vim

参考

  1. 《鸟哥的Linux私房菜》
  2. Linux - vim按键说明