学习时间是2020年3月下旬,疫情居家隔离期间。 学习视频是,学堂在线上,颜晨阳老师讲的Linux系统管理。
vi 入门
编辑文本基本是linux中最常见的操作。
强烈推荐vi 为首选文本编辑器。
vi 是linux中预装的文本编辑器。
vim 是vi 升级版(vi improved),vim 完全兼容vi。
命令行下输入 vim,即打开vim文本编辑器。
vim 是一个模式编辑器,有三种基本的模式,不同的模式完成不同的任务,分别是
- 一般模式,动作指令,如移动光标,删除,复制,粘贴等。
- 输入模式:输入字符
- 命令行模式:打开,保存,查找,替换等。
按下i键,即让vim进入编辑模式,左下显示INSERT。vim在一般模式的时候,左下显示文件名或者空白。
输入模式下,输入内容。完成输入后,按esc键,编辑器又进入一般模式。
一般模式下,移动光标,h 左, j下, k 上, l右。 移动光标也可以通过箭头操作,但是不建议如此操作,因为上述h j k l 四个键正好在右手放在键盘上的位置。
删除的方法是将光标移动到想删除的文字上,然后按x键。删除一整行,是将光标移动到要删除的行的任意一处,然后使用的命令是,”dd” 命令,删除后下面行会移上来填补空缺。删除换行符的操作是,将光标移动到行末,然后按下shit+J (即大写J键),即删除了当前的换行符。命令u可以撤销最后一次的编辑,按下ctrl+r,可以redo。
一般模式下,输入 : 即进入命令行模式。
使用 “:wq sample.txt”命令退出vim,该命令将修改的文件保存至硬盘sample.txt并退出vim。命令 : 让编辑器进入命令模式,命令w告诉编辑器保存文件,命令q告诉编辑器退出程序。
“:q!” 命令是,退出并不保存任何修改。命令中的 ! 即告诉编辑器无需保存文件。
vim进阶
用vim 完成一个12步的文本编辑任务。
mkdir /tmp/vimtest
cd /tmp/vimtest
cp /etc/man_db.conf .
vim man_db.conf
接着为任务操作内容
- 设定行号。任务是设定行号。设定行号属于设定环境参数,设定环境参数的命令是
set 环境参数
,取消设置是set no环境参数
。按冒号进入命令行模式,输入 set nu即可。若要取消设定行号,输入”Set nonu”。 - 精确移动以及移动至行首行尾。任务是移动到第58行行首,再向右移动30个字符,移动到第8行行尾,再向左移动3列,最后移动到文件末行。vim中可以使用移动命令键进行移动光标,也可以使用数字+移动命令键进行精确快速移动。如 8l为向右移动8个字符,3j为向下移动3行。gg表示移动到文件首行,G表示移动到文件末行,数字0表示移动到当前行首,美元符表示移动到当前行尾。3G表示将光标移动到第3行行首,10$表示下移10行,并定位到行尾。
- 查找操作。移动到第1行行首,并且向下搜寻 man 这个字符串。 操作是gg移动到文件首行,在普通模式下,键入斜线进入命令行模式,然后输入man从光标处开始向下查找man 字符串。用n或N遍历所有查找到的字符串。
- 替换操作。任务是,将50到100行之间的man替换为MAN, 并且一个一个挑选询问用户是否需要替换。在vim中替换的基本模式是,
n1,n2s/word1/word2/gc
, 表示在第n1和n2行之间查找word1字符串(当需要在整个文件中进行查找替换时,可以令n1=1为首行, n2=$表示末行),并用word2来替代。命令中的字符c可以省略,包含c表示vim在替换前询问用户。操作是,在普通模式下,键入冒号进入命令模式,输入50,100s/man/MAN/gc
。 - 复制指定行的内容并粘贴。任务是,复制51到60行这十行的内容,并且贴到最后一行之后。vim中复制命令是,yy,即复制光标所在行, nyy表示复制从光标行开始的向下n行。vim中粘贴命令是 p,表示在光标的下一行粘贴。操作是,50G定位到文本第50行,10yy复制51-60行文本,G定位到文本最后一行,p进行粘贴。
- 删除字符和整行删除。任务是,删除11到30行之间的20行,定位至29行行首,并且删除15个字符。vim中dd表示删除光标所在行,ndd表示删除从光标行开始的向下n行。vim中字符删除命令是x,表示删除光标所在处的字符,nx表示从光标所在开始删除n个字符。操作是,10G,20dd, 29G, 15x.
- 撤销操作。任务是,撤销前面的所有修改。vim中 u 撤销一次操作,或者在键入e! 撤销全部操作。操作是,
- 文件另存为操作。任务是,将这个文件另存为一个名为man.config.bak的文件。操作是,在普通模式下,键入冒号进入命令行模式,:w man.config.bak ,即可。其中,w为保存命令,后跟文件名。
- 插入其他文档中的内容。任务是,在最后一行后,插入当前目录下turtle.txt文件内容并保存。操作是,键入G定位至最后一行,键入冒号进入命令行模式,
:r /turtle.txt
,即将turtle文件内容插入至文件末尾。然后用w保存。r命令就是将另一文件的内容追加到当前光标的后面。 - 同时打开多个文档。任务是,同时打开man_db.conf 和man.config.bak。vim提供了同时编辑多个文件的功能,vim 文件1, 文件2 ….文件n,即同时打开多个文件。然后在命令行模式下,用:n , :N 可以在多个文件之间进行切换。
- 可视模式。任务是,将man.config.bak中插入的turtle.txt文件内容的第一列到底10列拷贝粘贴到man_db.conf 中。操作是,在普通模式中,按ctrl V即可进入可视模式,然后在屏幕左下方会显示可视字样,可视模式下提供了十分友好的文本选择方法,光标移动,即可选择文本。选择好10列内容后,按下y复制内容。然后切换文件,G进入最后一行,按下p进行粘贴。
- 存储文件,退出vim。
参考资料推荐
书籍 《Vim使用技巧》
书籍 《学习vi和vim》