vim 是个文本编辑器,文本编辑器是实现编辑文本的工具,本文值得是纯文本信息,必须是纯粹的,不加修饰的文本信息。
文本编辑器种类
- 行编辑器:sed
- 全屏编辑器:nano,vi,vim
vim
vim是一种模式化的编辑器,基本模式有三种常见的模式
-
编辑模式,命令模式
-
输入模式
-
末行模式:内置的命令行接口
使用方式
vim教程:vimtutor
-
打开文件:vim [options] [file ..]
-
+#:打开文件后,直接让光标处在第#行的行首
-
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
-
-
模式转换:
-
编辑模式:默认模式
-
编辑模式--->输入模式:
-
i:insert在光标所在处输入
-
a:append,在光标所在后输入
-
o:在光标所在处下方打开一个新行
-
I:在光标行首插入
-
A:在光标所在行的行尾输入
-
O:在光标所在的上方打开一个新行
-
-
输入模式--->编辑模式
-
ESC键
-
-
默认模式--->末行模式
-
冒号
-
-
末行模式 ---> 编辑模式
-
-
-
关闭文件:
-
ZZ:保存并退出
-
:q:退出
-
:q!:强制退出,不保存此前的编辑操作
-
:wq:保存并退出
-
:x:保存并推出
-
:w /PATH/TO/SOMEFTLE:保存到指定目录
-
-
光标跳转:
-
字符间跳转
-
h:左
-
j:下
-
k:上
-
l:右
-
#COMMAND:跳转由#指定的个数的字符
-
-
单词间跳转
-
w:下一个单词的词首
-
e:当前或后一个单词的词尾
-
b:当前或前一个单词的词首
-
#COMMAND:跳转由#指定的个数的单词
-
-
行首行尾跳转
-
^:跳转至行首的第一个非空白字符
-
0:跳转至行首
-
$:跳转至行尾
-
-
行间跳转
-
#G:跳转至由#指定的行
-
1G或gg:跳转第一行
-
G:跳转至左后一行
-
-
句间跳转
-
(
-
)
-
-
段间跳转
-
{
-
}
-
-
-
翻屏:
-
Ctrl+f:向文件尾部翻一屏
-
Ctrl+b:向文件首部翻一屏
-
Ctrl+d:向文件尾部翻半屏
-
Ctrl+u:向文件首部翻半屏
-
Enter:按行向后翻
-
-
vim编辑命令
-
字符编辑
-
x:删除字符所在处的字符
-
#x:删除光标所在处起始的#个字符
-
xp:交换光标所在处的字符与其后面的位置
-
-
替换命令
-
r#:替换光标所在处的字符,将原来的字符变为#所指代的字符
-
-
删除命令
-
d:删除命令,可结合光标跳转字符,实现范围删除
-
d$:删除光标所在处直至行尾
-
d^:删除光标所在处直至行首
-
dw:向后删
-
de:
-
db:
-
dd: 删除光标所在的一整行
-
#dd:删除光标所在的行起始的共行#数
-
-
-
粘贴命令
-
p:缓冲区的内容如果位整行,则粘贴在当前光标所在 行的下方,否则粘贴至当前光标所在处的后方
-
P:缓冲区的内容如果位整行,则粘贴在当前光标所在 行的上方,否则粘贴至当前光标所在处的前方
-
-
复制命令(yank,y)
-
y:复制,工作行为相似于d命令
-
yy:复制一整行
-
#yy:复制#行
-
-
改变命令:
-
c:编辑模式--->输入模式,并实现删除操作
-
cc:删除光标坐在行,并转化为输入模式
-
-
-
其他操作
-
可视化模式:
-
v:按字符选定
-
V:按行选定
-
结合编辑命令使用:d,c,y
-
-
撤销操作:
-
u:撤销先前的操作
-
#u:撤销此前的#个操作
-
Ctrl+r:撤销此前的撤销操作
-
-
重复执行前一个操作:
-
.
-
-
vim末行模式
内建的命令行模式
- 地址定界:对那些范围进行操作
- :start_post[,end_pos]
-
可以同编辑的命令一同使用,实现编辑操作:d,y,c,w /PATH/TO/SOMEFILE,r /PATH/TO/RESOMEFILE
-
/pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行
-
/pattern/ :从光标开始,第一次被模式所匹配到的行
-
%:全文
-
$:最后一行
-
.:当前行
-
#,+#:指定范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7
-
#,#:指定行范围。左侧为起始行,右侧为结束行
-
#:特定的第#行
-
查找
-
/PATTREN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTREN:从当前光标所在处向文件首·部查找能够被当前模式匹配到的所有字符串;
-
n:下一个
-
N:上一个
-
-
-
查找并替换
-
s:
-
s/要查找的内容/替换为的内容/修饰符
-
要查找的内容:可使用正则表达式
-
替换为的内容:不能使用正则表达式。但是可以引用
-
如果”要查找的内容“部分在模式中使用分组符号:在”替换为的内容“中使用向后引用;
-
-
修饰符:
-
i:忽略大小写
-
g:全局替换,意味着一行中如果匹配到多次,则均替换
-
-
-
-
-
- :start_post[,end_pos]
vim的多文件功能
-
多文件:
-
vim FILE1 FILE2
-
在文件间切换
-
:next:下一个
-
:prev:上一个
-
:first:第一个
-
:last:最后一个
-
-
退出所有文件
-
:wqall:保存所有文件并退出
-
:wall
-
:qall
-
-
-
-
多窗口
-
-o:水平分割
-
-O:垂直分割
-
在窗口间切换:Ctrl+w,ARROW
-
注意单文件也可以多窗口分割查看:
-
Ctrl+w,s:水平分割
-
Ctrl+w,v:垂直分割
-
-
定制vim的工作特性
注意:在末行模式下的设定,仅对当前vim进程有效
-
永久有效:
-
全局:/etc/vimrc
-
个人用户:~/.vimrc
-
-
行号
-
显示::set number,简写:set nu
-
取消显示::set nonumber,简写:set nonu
-
-
括号匹配高亮显示
-
匹配::set showmatch,简写:set sm
-
取消匹配::set noshowmatch,简写:set nosm
-
-
自动缩进
-
启用::set ai
-
禁用::set noai
-
-
高亮搜索
-
启用::set hlsearch
-
禁用::set nohlsearch
-
-
语法高亮
-
启用::syntax on
-
禁用::syntax off
-
-
忽略字符大小写
-
启用:set lc
-
禁用:set nolc
-
获取帮助
-
:help
-
:help subject