vi是Linux命令行界面下的文字编辑器,vim是vi的增强版(Vi IMproved),完全兼容
可以理解成普通的txt文本与word文档之间的差距。
注:还有一款全屏编辑器是nano,可以了解下
【vim的三种模式】
普通模式,编辑模式,命令模式
1.普通模式
使用vim命令打开文件,只能使用上下左右键移动光标,并且操作复制,粘贴,删除等之类的工作
2.编辑模式
普通模式下不能对文件内容进行编辑,只有按下“i,I,o,O,a,A,r,R,s,S”,等字母,进入编辑模式之后才可以执行录入文字
编辑模式有一个插入的标记在屏幕的最下方
3.命令模式
在普通模式下,输入“:/ ?”时,光标会自动定位在那一行,此模式中可以执行保存,退出,搜索,替换,显示行号等相关操作
vim [OPTION]...FILE...
如果文件存在,则打开它,如果不存在,则打开一个新的文件,如果存盘则创建文件,不存盘则不创建文件
【vim打开文件进行快速定位】
+#:打开文件后,直接让光标处鱼第#行的行首
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配当的行的行首
vim +11 /etc/passwd
-b:二进制方式打开文件
-d:比较多个文件的差异
-m:只读打开文件
ex file 或 vim -e:直接进入ex模式
【模式转换】
普通模式 ----> 插入模式
i:insert,在光标所在处输入
I:在光标所在行的行首输入
a:在光标所在处的后一个字符输入
A:在光标所在行的行尾输入
o:在当前光标所在行的下一行新开一行 open
O:在当前光标所在行的上一行新开一行
字符间跳转:
h:左
j:下
k:上
l:右 #[hljk]:指定一次跳转多少的字符数
单词间跳转:
w:跳到下一个单词的词首
e:当前或下一个单词的词尾
b:当前或上一个单词的词首
#[web]:指定一次跳转多少个单词数
当前页跳转:
H:页首
M:页中
L:页底
翻屏:
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
行首行尾跳转:
^:调到行首非第一个非空白字符处
0:调到行首
$:跳转至行尾
行间移动:
#G:跳到第#行
G:最后一行 例如:1G或gg:第一行
字符编辑:
x:删除光标处的字符
#x:删除光标处起始的#个字符
xp:交换光标所在处及其后面字符的位置 原理是:先删除光标所在位置,然后使用p粘贴
~:转换大小写
替换命令:
r:替换个光标所在处的字符 7rv 光标后7为替换成v
R:切换成replace模式
删除命令:
d:删除命令,可结合光标跳转命令实现范围删除
d$:删除光标至行尾的字符
d^:删除光标至行首非空白字符处
d0:删除光标至行首
dw:删除光标当标至下一个单词的词首
de:删除光标至当前或下一个单词的词尾
db:删除光标至上一个单词的词首
dd:删除光标所在行
#dd:删除#光标后的#行
复制命令:
y:复制
y$:从光标所在处复制到行尾
y0:从光标所在处复制到行首
y^:从光标所在处复制到行首的非空白字符处
ye:从光标所在处复制至当前或下一个单词的词尾
yw:从光标所在处复制至下一个单词的词首
yb:从光标所在处复制至上一个单词的词首
yy:复制光标所在行
#yy:复制多行
粘贴命令:
p:粘贴,如果缓冲区为整行,则粘贴在光标所在行的下一行,否则,粘贴在光标所在处的后面
P:粘贴,如果缓冲区为整行,则粘贴在光标所在行的上一行,否则,粘贴在光标所在处的前面
可视化模式:
v 按字符选定
V 按航选定,经常结合编辑命令,d,c,y
撤销此前的编辑
u(undo)撤销此前的操作
#u 撤销指定次数的操作
撤销此前的撤销
vim中的末行模式:
按“:”进入末行模式
(1)地址定界
:start_pos,end_pos
# 具体第#行,例如2表示第2行
#,# 从左侧#表示行起始,到右侧#表示行结束
#,+# 从左侧#表示行起始,加上右侧#表示的行数
. 表示当前行
$ 表示最后一行
% 全文,相当于1,$
/part1/,/part2/
从第一次被part1模式匹配到的行开始,一直到第一次被part2匹配到的行结束
使用方式:
后跟一个编辑命令
d
y
w /PATH/TO/SOMEWHERE
:1,20w /tmp/.txt
r filename:读取文件内容到当前文件中
:r /etc/fstab
q:退出
q!:强制退出
wq:保存并退出
wall 保存所有
x:保存并退出
ZZ:保存退出
ZQ:不保存退出
(2)查找
/PATTERN 从当前光标所在处尾部查找
?PATTERN 从当前光标所在处首部查找
n 与命令同方向
N 与命令反方向
(3)替换
s 在末行模式下完成查找替换操作
s/要查找的内容/替换为的内容/修饰符
替换的内容可以使用反向引用1,2,可以使用&引用前面查找时查到的内容
修饰符号:
i 忽略大小写
g 全局替换,默认情况下,每一行只替换第一次出现
【定制vim的工作特性】
配置文件:永久有效
全局 :/etc/vimrc
个人:~/.vimrc 需要自己创建
末行:当前vim进程有效
(1)显示行号:
set nu 显示;
set nonu 取消显示;
(2)括号成对匹配:括号高亮
set sm:设置;
set nosm:取消;
(3)自动缩进:
set ai
set noai
(4)高亮搜索:
set hlsearch high light search
set nohlsearch nohls
(5)语法高亮:
syntax on
syntax off
(6)忽略字符的大小写:
set ic
set noic
(7)文本格式:
set fileformat=dos :启用windows格式;
set fileformat=unix:启用unix格式;
(8)设置文本宽度:
set textwidth=65 (vim only)
set wrapmargin=16
(9)设置tab键的缩进长度:
set tabstop=4
set softtabstop=4:设置一个退格键退回来的长度;
set shiftwidth=#:设置每一级缩进的长度;
set authindent:表示自动缩进;
set noautoindent 取消自动缩进,使用方法:在粘贴数据之前使用,然后粘贴文件。如阿云托管k8s集群需要的config文件
set paste 粘贴文本文件
(10)帮助信息:
:help option-list
:set or :set alal