VIM编辑器
vi : visual interface,文本编辑器
文本:ASCII,Unicode
文本编辑器种类:
行编辑器:sed
全屏编辑器:nano,vi
VIM: vi improved
模式化的编辑:
基本模式:
编辑模式,命令模式
输入模式,插入模式
末行模式:内置的命令行接口
打开文件:
vim [选项][文件]
vi +5 文件名 打开文件,光标位于文件的第五行行首。
vi +/内容 文件名 打开文件,光标位于第一个匹配到的内容的第一行行首。
模式转换:
编辑模式->输入模式,插入模式
i:insert ,在光标所在处插入
a:append ,在光标所在处后面插入
o:在当前光标所在行的下一行打开一个新行。
I:在当前光标所在行的行首输入。
A:在当前光标所在行的行尾输入。
O:在当前光标所在行的上方打开一个新行。
输入模式->编辑模式
ESC
编辑模式->末行模式
:
末行模式->编辑模式
ESC
关闭文件:
:q 退出 如果文件编辑过,无法使用:q退出。
:q! 强制退出,丢弃作出的修改
:wq 保存退出
:x 保存退出
:w 保存路径 【另存为】
光标跳转:
字符间跳转
h,j,k,l 左 下 上 右
使用数字接命令可以跳转对应数量。
3h 左移3
4j 下移4
单词间跳转
w 跳转到下一个单词的首字母
b 跳转到当前或者上一个单词的首字母
e 跳转到当前或者下一个单词的最后一个字母
使用数字接命令可以指定跳转的单词数
3w 跳转到后3个单词的首字母
4b 跳转到前面3个或者4个单词的首字母
行首行尾跳转
^:跳转至行首的第一个非空白字符
0:跳转至行首
$:跳转至行尾
行间移动
数字G 移动到数字对应的行
3G 移动到第3行
G 跳转到最后一行
1G 或者 gg 跳转到第一行
句间移动
) 跳转到下一个句子
( 跳转到前一个句子
} 跳转到下一个段落
{ 跳转到上一个段落
vim的编辑命令
字符编辑:
x:删除光标处的单个字符
数字x:删除光标之后的数字个字符
6x 删除光标之后的6个字符
xp:交换光标所在字符与其后字符两个字符的位置
删除命令
d:删除命令,可结合光标跳转字符,实现范围删除。
d$:z删除光标到行尾
dG:删除光标到文件结尾
d0:从行首删除到光标所在位置
dd: 删除光标所在的行
数字dd:删除包括光标所在行一共数字行、
3dd 删除3行
粘贴命令(paste)
粘贴的内容来自于删除或者复制命令的缓冲区内容。
p:缓冲区中如果存储的为整行(dd),则粘贴至当前光标所在行的下方,否则粘贴至当前光标所在行。
P:如果缓冲区中为整行(dd),则粘贴至当前光标所在行的上方,否则粘贴至当前光标前面。
复制命令(yank)
y:复制,工作行为类似于d命令
y$
y0
y^
ye
yw
yb
数字y
yy
数字yy
改变命令(change)
c:修改
编辑模式->输入模式
c$ 将当前光标到行尾的内容删除,并且进入编辑模式
cgg 将光标之前的所有内容删除,并且进入编辑模式
其他跳转命令也可以结合使用
cc 删除当前行,并且进入编辑模式
替换命令(replace)
r:替换光标处所在字符
r替换的字符 替换单个字符
数字r替换的字符 替换数字个字符,当前行字符不够,不能替换
其他编辑操作:
可视化模式(visual)
v:逐个字符选定
V:整行整行的选定
撤销此前的编辑(undo)
u
撤销此前的撤销
Ctrl+R
重复前一个编辑操作
.
翻屏操作
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
vimtutor 查看vim的内置教程
末行模式
内建的命令行接口
(1)支持地址定界机制
:开始位置,结束位置
:2 定位到第2行
:2,100 从第2到100行
:2,100d 删除2到100行
:2,+100 从第二行开始,到后面的100行
:2,+100d 从第2行开始,向后删除100行
. 当前行
$ 最后一行
% 全文,相当于1,$
使用方式
后跟一个编辑命令或者保存命令
:1,15w ~/store.txt 将文件的1到15行保存到home目录下的store.txt下
:10r ~/store.txt 在文件的第10行插入home目录下的store.txt的所有内容
(2)支持查找
/test 从当前光标所在处向文件尾部查找test字符串
?test 从当前光标所在处向文件首部查找test字符串
使用n 移动到下一个匹配位置
使用N 移动到上一个匹配位置
(3)查找并替换
s: 在末行模式下完成查找替换操作
%s/aaa/123 全文搜索aaa替换为123
其中/可以替换为其他字符(在替换内容中没有出现的字符)