ps:这是本公众号第一篇推文,小白第一次写作,希望大家支持,如有错误,望批评指正。
在所有的UNIX-Like系统中都会内建vi文本编辑器,vi是老式的文本编辑器,其他的文本编辑器则不一定会存在。而vim具有程序编辑的能力,可以主动地以字体颜色辨别语法的正确性,方便程序设计。
vi分为命令模式(Command mode)、编辑模式(Insert mode)、底线命令模式(Last line mode)3种模式。
命令模式(commandmode)
用vi打开一个文件就进入了命令模式,在此模式中,你可以用上下左右键移动光标,也可以使用x(删除字符)、删除整行、复制、粘贴等操作处理文件的内容。
编辑模式(insertmode)
在此模式中,你可以进行文本编辑。在进入命令模式后,需要按下[i,I,o,O,a,A,r,R]等任何一个字母进入此模式。按下按键后,在窗口下方会有显示当前的操作,如[INSERT]和[REPLACE],此时就是进入了编辑模式。退出编辑模式按[Esc]。
底线命令模式(last line mode)
在命令模式中按下[:]或[/]或[?]中的任意一个即可进入底线命令模式。进入此模式后,光标会移动到最下面一行。在此模式下,你可以执行查询数据、显示行号、批量替换字符等操作。
注意:命令模式可以与编辑模式及底线命令模式切换,但编辑模式与底线命令模式之间不能直接切换。
接下来我们来尝试使用vim程序编辑器吧!
首先,我们先使用vim创建一个t1.txt文本文件。命令为vim + 新建的文件名。
创建后我们便进入了这个文件,当然,新文件为空文件。可以看到命令行最下面那一行显示了文件名称“t1.txt”,后面的中括号里面提示这是一个新文件。
然后我们按下i后进入编辑模式,同样的,在最下一行显示了“INSERT”,提示进入了插入模式。
我们编辑一段文本。在提示信息里面还有当前光标所在的位置,如下图,当前光标位于第3行,第10个字符位。
按下[Esc]回到命令模式,输入:(冒号)进入底线命令模式,输入wq保存并退出。
最后,我们使用cat指令查看文件内容。
我们使用vim打开一个文本文件,进入文本文件,可以看到最下面一行的提示信息中有文件的行数和字符数。如下图,此文件一共21行,1291个字符。
在命令模式下的一些功能键(标红指令为常用指令)
[h]或[←]左箭头 | 光标向左移动一个字符 |
[j]或[↓]下箭头 | 光标向下移动一个字符 |
[k]或[↑]上箭头 | 光标向上移动一个字符 |
[l]或[→]右箭头 | 光标向右移动一个字符 |
[数字]+[h]或[j]或[k]或[l]或上下左右箭头 | 指定次数的移动 |
) | 光标移至句尾 |
( | 光标移至句首 |
} | 光标移至段落最后一个字母 |
{ | 光标移至段落第一个字母 |
[Ctrl]+ f | 屏幕向下移动一页 |
[Ctrl]+ b | 屏幕向上移动一页 |
[Ctrl]+ d | 屏幕向下移动半页 |
[Ctrl]+ u | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一行(即移动到下一行除空行外第一个非空格符处) |
- | 光标移动到非空格符的上一行(即移动到上一行除空行外第一个非空格符处) |
[数字n]+[空格] | 光标向右移动到光标所在处数起的第[数字n]个字符处 |
[数字0]或[Home] | 光标移动到本行行首 |
[$]或[End] | 光标移动到本行行尾 |
H | 光标移动到屏幕最上方一行的首个字符 |
M | 光标移动到屏幕中间一行的首个字符 |
L | 光标移动到屏幕最下方一行的首个字符 |
G | 光标移动到此文件的最后一行的首个字符 |
[数字n]+G | 光标移动到此文件的第n行 |
数字n+ | 光标下移n行 |
数字n- | 光标上移n行 |
数字n$ | 光标移至第n行尾 |
gg | 光标移动到此文件的第一行 |
[数字n]+[enter] | 光标向下移动n行 |
[/]+查询的字符串 | 向光标之下寻找一个字符串 |
[?]+查询的字符串 | 向光标之上寻找一个字符串 |
n | 重复前一个查找的操作 |
N | 反向进行前一个查找操作 |
:[行数字1],[行数字2]s/源字符串/目标字符串/g | 在[行1]到[行2]之间寻找源字符串并替换成目标字符串 |
:1,$s/字符串1/字符串2/g | 从第一行到最后一行寻找字符串1,并将该字符串替换为字符串2 |
:1,$s/字符串1/字符串2/gc | 从第一行到最后一行寻找字符串1,并将该字符串替换为字符串2,且在替换前显示提示字符串给用户确认是否需要替换 |
x | 向后删除一个字符 |
X | 向前删除一个字符 |
[数字n]+[x] | 向后连续删除n个字符 |
dd | 删除(剪切)光标所在的一整行 |
[数字n]+[dd] | 删除(剪切)光标所在的向下n行 |
d1G | 删除(剪切)光标所在到第一行的所有数据 |
dG | 删除(剪切)光标所在到最后一行的所有数据 |
d$ | 删除(剪切)光标所在处到本行的最后一个字符 |
d0 | 删除(剪切)光标所在处到本行的第一个字符 |
yy | 复制光标所在的那一整行 |
[数字n] + yy | 复制光标所在的向下n行数据 |
y1G | 复制光标所在行到第一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p | 将已经复制的数据在光标下一行粘贴 |
P | 将已经复制的数据在光标上一行粘贴 |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据 |
u | 恢复前一个操作 |
[Ctrl]+r | 重复上一个操作 |
.(小数点) | 重复前一个操作 |
命令模式切换到编辑模式功能键(标红指令为常用指令)
i | 进入插入模式(Insert mode),从光标所在处插入 |
I | 进入插入模式(Insert mode),从目前所在行的第一个非空格符处开始插入 |
a | 进入插入模式(Insert mode),从光标所在的下一个字符开始插入 |
A | 进入插入模式(Insert mode),从光标所在行的最后一个字符处开始插入 |
o(大写字母o) | 进入插入模式(Insert mode),从光标所在的下一行处插入新的一行 |
O(大写字母O) | 进入插入模式(Insert mode),从光标所在的上一行处插入新的一行 |
r | 进入替换模式(Replace mode),替换光标所在的一个字符一次 |
R | 进入替换模式(Replace mode),一直替换光标所在的字符,直到按下[Esc]停止 |
[Esc] | 退出编辑模式,回到命令模式 |
命令模式切换到底线命令模式功能键(标红指令为常用指令)
:w | 将编辑的数据写入硬盘文件中 |
:w! | 强制写入该文件,但具体看用户对文件的权限 |
:q | 退出vim |
:q! | 强制退出不保存 |
:wq | 保存并退出 |
:wq! | 强制保存并退出 |
ZZ | 若文件没有修改,则不保存退出;若文件已经修改过,则保存并退出 |
:w [文件名] | 将编辑后的文件另存为新文件 |
:r [文件名] | 在编辑的数据中,读入另一个文件的数据,即在当前文件中追加新文件 |
:n1,n2 w [文件名] | 将n1到n2的内容保存为新文件 |
:! command命令 | 暂时退出vi到底线命令模式下执行command的显示结果 |
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
参考文献:
《鸟哥的Linux私房菜基础学习篇》(第四版)
侵权即删。