vim编辑器
文本编辑器:
文本:纯文本,ASCII text,Unicode ;【word不是纯文本处理 工具,有各种格式】
文本编辑器种类:
行编辑器:sed
全屏编辑器:nano,vi
vi:visual interface
vim:vi improved 即vi的增强版
vim:格式 化的编辑器
基本模式:
编辑模式,即命令模式
输入模式,即插入模式
末行模式:
内置的命令行接口。
打开文件:
vim [options] [file ..]
默认打开光标在首行
+:只带+这一个参数,光标显示在尾行行首
+# :打开文件后,让光标处于#行的行首
+/pattern:打开文件后,直接让光标处于第一个被 pattern匹配的位置行的行首【例如到达文件中lisa的位置,vim /path/to/file +/lisa即可
模式转换:
编辑模式:默认模式
编辑模式 --> 输入模式:
i:insert 在光标所在处输入;
a:append,在光标处后方输入;
o:在光标所在处下方打开一个新行,会把原来处于下行的数据整体下移;
I:【大写的i】在光标所在的行的行首输入;
A:在光标所在行的行尾进行输入;
O:在光标所在处的上方打开一个新行。
输入模式 -->编辑模式:
ESC
编辑模式 -->末行模式【内置命令行】:
:冒号
末行模式 -->编辑模式:
ESC
关闭文件:
ZZ:保存并退出【编辑模式下】
:w 保存
:q退出
:q! 强制退出,不保存此前的编辑
:wq 保存并退出
:x 保存并退出
:w /path/to/file 另存为/path/to/file
光标跳转:
字符间跳转
h,l向左和向右一个字符跳转
j,k向下和向上一行跳转
如果在这四个字母前面加上一个数字,则表示往此方向跳转此数字个字符
单词间跳转
w:跳到下一个单词的词首;
b:当前或前一个单词的词首;
e:当前或后一个单词的词尾
也可以在字母前加数字表示跳转单词的个数
行首行尾跳转
^:跳转至行首的非空白字符;
0:跳转至绝对行首,包括空字符;
$:跳至绝对行尾
行间跳转
#G: 跳转至#行行首
1G或gg:跳转至第一行
G:跳转至最后一行
句间跳转:
):下一句
(:前一句
前面可以加数字
段间跳转
}下一段
{上一段
翻屏:
CTRL+f :向文件尾部翻一屏
CTRL+b:向文件首部翻一屏
CTRL+d:向文件尾部翻半屏
CTRL+u:向文件首部翻半屏
回车键:向后翻行
vim的编辑命令:
字符编辑
x:删除光标所在处的字符,#x 删除光标处所在处起始的#个字符
xp:交换光标所在处的字符与其后面的字符的位置
替换命令(replace)
r:替换广播所在处的字符
r之后输入将要替换后的字符
删除命令
d:删除命令
d$ 删除当前光标所在处至行尾
d^:删除当光标至行首【非空行首】
d0:删除当光标至绝对行首
dw:删除至下一个单词行首
de:删除至当前单词结尾
db:删除至当前单词行首
dd:删除整行
以上命令前添加数字即可对数字倍数的目标数据进行删除 ,删除后的结果会保存在缓冲区,即剪切的功能
粘贴命令(p,put,paste):
p:缓冲区的内容如果是整行,则粘贴在当前光标所在行的下方,否则粘贴至当前光标所在处的后方
P:缓冲区的内容如果是整行,则粘贴在当前光标所在行的上方,否则粘贴至当前光标所在处的前方
dd命令的复制的都是行数据,其他的都是非行数据.
复制命令(yank,y):
y:复制,工作行为相似于d命令
y$
y^
y0
ye
yw
yb
yy 复制一整行
#command 复制#个/行数据
改变命令(change,c):
编辑模式 --> 输入模式,实现删除操作 ;
c$
c^
c0
cb
ce
cw
cc 删除光标所在行,并且转换为输入模式
#command删除#个,并转换为输入模式
可视化模式(visual):
移动上下左右即可进行范围内选中
v:按字符选定
V:按行选定
结合编辑命令:d,c,y
撤销操作(undo):
u:最多可以撤回50步
#u 撤销此前的#步操作
撤销此前的撤销:
CTRL + r
执行重复前一个编辑操作:
.小数点
vim 自带教程:vimtutor命令
vim末行模式:
内建的命令行接口
1、地址定界
:start_pos,[end_pos]
#:特定的第#行
#,#:指定行范围起始-结束;
.:小数点表示当前行;
$:表示最后一行;
#,+#:指定行范围,做错为起始行绝对编号,右侧为相对左侧行号的偏移量,例如3,+7表示第三行和后面的7行
%:全文
/pattern/:从光标所在处起始向文件尾部,第一次被模式所匹配的行
/pattern1/,/pattern2/:从广播所在其实向文件尾部,第一次由pattern1匹配到的行开始,到第一次由pattern2匹配到的行结束之间的所有行。
一般同编辑命令一同使用,实现编辑操作:
d删除
y复制
c删除并输入
例如:1,$d即删除全文
w /path/to/file :将范围内的 文本另存为;
r /path/to/file:将指定的文本读取并插入至当前文本的指定位置
2、查找
/pattern:从当前光标处所在处往文件尾部查找能够被当前模式匹配道德所有字符串;
?pattern:从当前光标处所在处往文件首部查找能够被当前模式匹配道德所有字符串;
n:下一个,与查找方向相同;
N:上一个,与查找方向相反。
3、查找并替换
s:末行模式的命令,使用格式:
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式;
替换为的内容:不能使用正则表达式,但是可以引用(如果要查找的内容福分在模式中使用分组符号,使用\1,\2...后向引用;或者可以直接引用查找模式匹配的全部文本,使用&符号)
修饰符:
i:忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均替换【默认是只替换一行中第一次出现的】
可把分隔符/替换为其他分隔符,可以使用@或#,因为/有时候是文本内的内容。
实例:
把文档中的所有以t开头的单词转换为首字母大写,即T开头:
:%s@\<t\([[:alpha:]]\+\)\>@T\1@g
把文档中的所有以t开头的单词转换为此单词后加er:
:%s@\<t([[:alpha:]]+\)\>@er@g
vim的多文件功能:
vim file1 file2 ...
在文件间切换:
:next
:prev
:first
:last
退出所有文件:
:wqall 保存并退出所有文件;
:wall 保存所有文件
:qall 退出所有文件
多窗口显示:
-o:水平分割窗口
-O:垂直分割窗口
CTRL+w 松开后按上下左右键切换
当前单文件也可以分割为多个窗口查看:CTRL+w 松开后按s水平分割,CTRL+w,松开后按v垂直分割窗口
定制vim的工作特性:
在末行模式下的设定,仅对当前vim进程有效
永久有效:
全局:/etc/vimrc
用户个人:~/.vimrc
1、行号
显示:set number,简写为set nu
取消显示:set nonumber简写为set nonu
2、括号匹配高亮【但是经验证,好像没那么有效,即设置不起作用,默认都是会匹配的】
匹配:set showmatch,set sm
取消:set nosm
3、自动缩进
编辑一行缩进到一定位置,回车后自动缩进。
set ai /noai :ai 即auto indent
4、高亮搜索
启用:set hlsearch
禁用:set nohlsearch
5、语法高亮
启用:syntax on
禁用:syntax off
6、忽略字符大小写
启用:set lc
禁用:set nolc
获取帮助:
:help
:help subject