Linux中的vim高级用法配置
文章目录
vim是全球两大流行文本编辑器之一,对于之前的学习中外面得知vim的基本操作,在本文介绍vim高级用法的学习心得:
一.vim的三种模式:
模式 | 特点 |
---|---|
命令模式(浏览模式) | 此模式下只能对文件内容浏览,只能对vim的工作方式进行设定,不能对文件内容进行修改 |
插入模式 | 对文件的内容进行修改的模式 |
退出模式 | 结束vim模式所用到的命令 |
vimtutor是vim手册,在vim中按:help就可以进入到vim中的帮助界面:
二.vim工作的基本原理:
在命令模式下如何更改vim配置,用到以下命令:
命令 | 效果 |
---|---|
set nu | 显示光标所在的行 |
set nonu | 不显示光标所在的行 |
set cursorline | 显示下划线 |
set mouse=a | 鼠标可用 |
对于vim设置的配置文件:
方法 | 效果 |
---|---|
vim /etc/vimrc | 配置对于所有用户设定,永久生效 |
vim ~/.vimrc | 配置修改仅对于当前用户生效 |
[1]配置/etc/vimrc时一般在最后进行编辑设置,以配置/etc/vimrc为例,将vim设定与现象结合:
set nu:vim文本中每行前添加行号:
set nonu:不显示行号:
set cursorline可以显示下划线:
set mouse=a可以显示鼠标图形以及鼠标功能,一般情况下不推荐设置:
也可以在~/.vimrc下编辑,如:添加显示行号和下划线:
三.搜索:
vim模式中对于关键字的搜素功能使定位更便捷快速:
输入格式 | 效果 |
---|---|
/ 关键字 | 高亮显示关键字 |
:noh | 取消关键字高亮显示 |
n | 向下匹配关键字 |
N | 向上匹配关键字 |
实验工具:/etc/passwd在桌面目录下使用命令cp /etc/passwd . 将其复制到桌面并进行实验:
四.vim中的字符管理:
1.复制字符:
操作 | 效果 |
---|---|
y | 复制的快捷键 |
yl | 复制一个字母 |
y3l | 复制三个字母 |
yw | 复制一个单词 |
y3w | 复制三个单词 |
yy | 复制一行 |
y3y | 复制三行 |
实验:复制粘贴一个单词
复制粘贴七个字母:
复制粘贴三行:
2.删除字符:
操作 | 效果 |
---|---|
d | 删除的快捷键 |
dl或x | 删除一个字母 |
d3l | 删除三个字母 |
dw | 删除一个单词 |
d3w | 删除三个单词 |
dd | 删除一行 |
d3d | 删除三行 |
实验:删除五个字母:
删除3个单词:
删除一行:
3.剪切字符:
操作 | 效果 |
---|---|
c | 剪切快捷键 |
cl | 剪切一个字母 |
c3l | 剪切三个字母 |
cw | 剪切一个单词 |
c3w | 剪切三个单词 |
cc | 剪切一行 |
c3c | 剪切三行 |
注:剪切操作之后会将刚才剪切的内容放入剪切板,可以在命令模式下粘贴,但是剪切完成后会直接进入插入模式,需要先按Esc退出插入模式再进行粘贴等操作:
4.粘贴字符:
操作 | 效果 |
---|---|
p | 在命令模式下p为粘贴 |
注:可以用p粘贴的内容为剪切的内容或复制的内容
5.恢复与撤销:
操作 | 效果 |
---|---|
u | 恢复为上一步操作前的状态 |
Ctrl+R | 撤销(可以连续撤销) |
五.vim可视化管理:
按Ctrl+v即可进入vim的可视化模式,下方会出现VISUAL BLOCK:
按Esc可以退出可视化模式,在vim的可视化模式中可以对于文本可以批量添加字符,操作步骤:
[1]Ctrl+v选中插入字符所在列:
[2]按大写I进入插入模式:
[3]插入要写入的字符:
[4]按Esc退出插入模式:
在vim的可视化模式中除了批量添加字符外还可以进行区域复制粘贴删除剪切等操作。
六.批量修改字符:
用以下命令可以实现对字符的批量修改:
:%s/原字符/替换字符/g
%全文的行,g全文的列,对于上述格式还有许多可以进行修改的点,如下所示:
1,5s/:/@/g
作用:将文本中1-5行所有列当中的:换成@
/lp/,/halt/s/:/@/g
作用:将lp字符到halt字符之间的所有:换为@
注:批量修改时s为必要元素,不能缺少,g为非必要元素可以缺少,但是缺少g只会修改第一列
实验:[1]修改全篇关键字:
[2]修改指定行之间的关键字:
[3]修改指定字符之间的关键字:
七.vim的分屏功能:
vim的分屏效果包括同步分屏与不同部分屏:
同步分屏:
操作 | 效果 |
---|---|
Ctrl+w 按s | 上下分屏 |
Ctrl+w 按v | 左右分屏 |
Ctrl+w 按上下左右键 | 光标移动至对应分屏区域 |
Ctrl+w 按c | 取消分屏 |
[1]同步上下分屏:
[2]同步左右分屏:
不同步分屏:
操作 | 效果 |
---|---|
vim -o file1 file2 | 左右分屏打开文件1文件2 |
vim -p file1 file2 | 上下分屏打开文件1文件2 |
Ctrl+w 按上下 | 光标上下移动至对应分区 |
:tabn :tabp | 光标左右移动至对应分区,tabn右移,tabp左移 |
[1]不同步上下分屏:
[2]不同步左右分屏:
八.vim中快速定位光标:
操作 | 效果 |
---|---|
gg | 光标移动到文件第一行行首 |
G | 光标移动到文件最后一行 |
:数字 | 光标移动到指定行 |
九.vim插入模式进入方式:
操作 | 效果 |
---|---|
i | 光标所在位置插入 |
I | 光标所在行的行首进行插入 |
A | 光标所在行的行尾进行插入 |
a | 光标所在字符的下一个字符插入 |
o | 光标所在行的下一行插入 |
O | 光标所在行的上一行插入 |
s | 删除光标所在字符插入 |
S | 删除光标所在行插入 |
十.vim退出模式:
操作 | 效果 |
---|---|
q | 退出不保存 |
q! | 强行退出不保存 |
wq | 保存退出 |
wq! | 强行退出,只有文件是自己的或者root用户可用 |
十一.TEST:
Q:查找一个字符串:
在文件/usr/share/xml/iso-codes/iso_639_3.xml中查找到所有包含字符ng的行
将找出的行按照先后顺序复制到/root/list文件中
/root/list文件中无意义的空格清除去掉
A:
本题目用到一个命令:grep
[1]grep是全局搜索正则表达式(过滤字符)
[2]grep keyword file表示显示file中有关键字的部分
[3]grep keyword file > targetfile将file中有keyword的部分复制转移至target file
grep ng /usr/share/xml/iso-codes/iso_639_3.xml > /root/list
vim /root/list
#在vim浏览模式中:
:%s/\t//g#\t是table键的转义符
wq!#退出保存