一、vim编辑器简介
文本:ASCII,Unicode
文本编辑种类:
行编辑器:sed
全屏编辑器:nano,vi
vim-Vi Improved
其他编辑器:
gedit:一个简单的图形编辑器
gvim:一个VIm编辑器的图形版本
二、vim打开文件
vim option file…
+n:打开文件后,直接让光标处于第n行的行首
+/pattern:打开文件后,直接让光标处于第一个被pattern匹配到的行的行首
+:打开文件后,光标在最后一行
-b:二进制方式打开文件
-d file1 file…:比较多个文件
-m:只读打开文件
-e或ex:直接进入ex模式
如果该文件存在,文件被打开并显示内容
如果不存在,当编辑后第一次存盘时创建它
vim是一个模式编辑器
击键行为是依赖vim的“模式”
三种主要模式
命令模式(默认):移动光标,查看文件,
插入(编辑)模式:修改文本
扩展命令模式(末行):保存,退出,执行命令
Esc退出当前模式
三、模式转换
命令模式 → 插入模式
i:在光标所在处输入
I:在当前光标所在行的行首输入
a:在光标所在处后面输入
A:在当前光标所在行的行尾输入
o:在当前光标所在行的下方打开一个新行
O:在当前光标所在行的上方打开一个新行
插入模式 → 命令模式
Esc
命令模式 → 扩展模式
:
扩展模式 → 命令模式
Esc
锁定:Ctrl+s
解锁:Ctrl+q
五、关闭文件
扩展模式
q:退出
q!:强制退出,丢弃做出的修改
wq:保存退出
x保存退出
命令模式
ZZ:保存退出
ZQ:不保存退出
六、扩展模式操作
按“:”进入ex模式
创建一个命令提示符:,处于底部的屏幕左侧
w:写(存)磁盘文件
wq:写入并退出
x:写入并退出
q:退出
q!:不存盘退出,更改无效
r file1 :读file1文件内容到当前文件中
w file1:将当前文件内容写入另一个文件
!command:执行命令
r!command:
地址界定
start_pos,end_pos
n:第n行
n,m:从n行到m行
n,+m:从n行到n+m行
.:当前行
$:最后一行
.,$:当前行到倒数第二行
%:全文,相当于1,$
/pattern/
/pat1/,/pat2/:从第一次被pat1模式匹配到的行到第一次被pat2匹配到的行
n,/pat/:从n行到被pat模式匹配到的行
/pat/,$:从被pat模式匹配到的行到最后一行
使用方式:后面跟一个编辑命令
d:删除
y:复制
w file:将范围内的行另存至指定文件中
r file:在指定位置插入总置顶文件中的所有内容
查找
/pattern:从当前光标所在处向文件尾部查找
?pattern:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
查找并替换
s:在扩展模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1,\2…等后向引用符号,还可以使用&引用前面查找是查找到的整个内容
修饰符
i:忽略大小写
g:全局替换,默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问
查找替换中的分个符/可替换为其他字符s@@@,s###
编辑二进制文件
-b:以二进制方式打开文件
扩展命令模式下,利用xxd命令转换为可读的十六进制
%!xxd
编辑二进制文件
扩展命令模式下,利用xxd命令转换回二进制
%!xxd -r
保存退出
七、命令模式操作
光标跳转
字符间跳转
h:向左
j:向下
k:向上
l:向右
n command:跳转由n指定一次跳转的单词数
单词间跳转
w:下一个单词的词首
e:当前或下一个单词的词首
b:当前或前一个单词的词首
n command:跳转由n指定一次跳转的单词数
当前页跳转
H:页首
M:页中间行
L:页底
行首行尾跳转
^:跳转至行首的第一个非空白字符
0:跳转至行首
&:跳转至行尾
行间移动:
nG:跳转至由n制定航
G:最后一行
1G或gg:第一行
句间移动:
(:下上一句
):下一句
段落间移动
{:上一段
}:下一段
翻屏
Ctrl+f或PgDn:向文件尾部翻一屏
Ctrl+b或PgUp:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
字符编辑
x:删除光标处的字符
nx:删除光标处起始的n个字符
xp:交换光标所在处的字符及其后面字符的位置
~:转换大小写
替换命令(r,replace)
r:替换光标所在处的字符
R:切换成replace模式
删除命令;
d:删除命令,可结合光标跳转字符,实现范围删除
d$:删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:删除下一个单词
de:删除当前或下一个单词
db:删除当前或上一个单词
dd:删除光标所在的行
ndd:多行删除
D:删除光标到行尾,留空行。等同于d$
复制命令(y,yank)
y:复制,结合光标跳转字符,实现范围复制
y$:复制到行尾
y^:复制到非空行首
y0:复制到行首
yw:复制下一个单词
ye:复制当前或下一个单词
yb:复制当前或上一个单词
yy:复制光标所在的行
nyy:多行复制
y:复制整行
粘贴命令(p,paste)
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则,则粘贴至当前光标所在处的后面
p:缓冲区存的如果为整行,则粘贴当前光标所在行的上方,否则,则粘贴至当前光标所在处的前面
改变命令(c,change)
c:修改后切换至插入模式
命令模式 → 插入模式
c$:删除到行尾输入新内容
c^:删除到非空行首输入新内容
c0:删除到行首输入新内容
cw:删除下一个单词输入新内容
ce:删除当前或下一个单词输入新内容
cb:删除当前或上一个单词输入新内容
cc:删除光标所在的行输入新内容
ncc:多行删除输入新内容
C:删除当前到行尾,并且换成插入模式
100wang Esc:粘贴“wang”100次
start position command end position
command
y:复制
d:删除
gU:变大写
gu:变小写
例:0y$
0→先到行头
y→从这里开始拷贝
$→拷贝到本行最后一个字符
ye从当前位置拷贝到本单词的最后一个字符
撤销更改
u:撤销最近的更改
nu:撤销之前n次更改
U:撤销光标落在这行后所有此行的更改
Ctrl+r:重做最后的撤销更改
.:重复前一个操作
n.:重复前一个操作n次
八、vim的寄存器
有26个命名寄存器和1个无名寄存器,常存放不同的剪贴板内容,可以不同会话间共享。
用a,b,c…z表示,用"寄存器表示,放在数字和命令之间
例:3"tyy表示复制3行到t寄存器中
"tp表示将t寄存器内容粘贴
未指定,将使用无名寄存器,有10个数字寄存器。
用0,1,2…9表示,0存放最近复制内容,1存放最近删除内容。
当新的文本变更和删除是,1转存到2,2转存到3,以此类推。
数字寄存器不能在不同会话间共享
九、可视化模式
v:面向字符
V:面向行
Ctrl+v:面向块
可视化可用于与移动键结合使用
w,),},箭头等
突出显示的文字可以被删除,复制,变更,过滤,搜索,替换等。
十、多文件模式
vim file1 file2 file3…
扩展命令模式下
next:下一个
prev:前一个
first:第一个
last:最后一个
wall:保存所有
qall:退出所有
wqall:所有文件保存退出
十一、多窗口模式
多个文件窗口分割
vim -o|-O file1 file2…
-o:水平分割
-O:垂直分割
在窗口间切换
Ctrl+w 上下
单个文件窗口分割
Ctrl+w,s:水平分割
Ctrl+w,v:垂直分割
Ctrl+w,q:取消相邻窗口
Ctrl+w,o:取消全部窗口
:wqall退出
十二、定制vim的工作特性
全局:/etc/vimrc
个人:~/.vimrc
扩展模式:当前vim进程有效
行号
显示:set number,简写set nu
取消显示:set monumber
括号成对匹配
匹配:set showmatch,简写set sm
取消匹配:set nosm
自动缩进
启用:set ai
禁用:set noai
高亮搜索
启用:set hlsearch
禁用:set nohlsearch
语法高亮
启用:syntax on
禁用:syntax off
忽略字符的大小写
启用:set ic
不忽略:set noic
文件格式
启用:fileformat=unix
不忽略:fileformat=dos
设置文本宽度
set trxtwidth=65(vim only) 左面开始65个字符
set wrapmargin=15 右面开始15个字符
标准竖20字符,横80字符
原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/32816