vim编辑器:文本编辑器:
文本:纯文本,ASCII text;Unicode
文本编辑器种类:
行编辑器:sed
全屏编辑器:nano,vi
vi:visual interface
vim:vi improved
vim:模式化的编辑器:
编辑模式,命令模式(复制粘贴);键盘操作通常被解析为编辑命令
输入模式:
末行模式:内置的命令行接口
打开文件:
vim [options] [file ..]
+#:打开文件后,直接让光标处于第#行的行首
+[num] For the first file the cursor will be positioned on
line "num". If "num" is missing, the cursor will
be positioned on the last line.
+/PATTENR:打开文件后,直接让光标处于第一个被PATTREN匹配到的行的行首
+/{pat} For the first file the cursor will be positioned on the first occurrence of {pat}. See ":help search-pattern" for the available search patterns.
+:最后一行的行首
vim -d file1 file2...比较多个文件
-d Start in diff mode. There should be two, three or four
file name arguments. Vim will open all the
files and show differences between them. Works like vimdi(1).
vim -b file 二进制打开文件
-b Binary mode. A few options will be set that makes it possible to edit a binary or executable file.
ex file 或 vim -e 直接接入ex模式
-e Start Vim in Ex mode, just like the executable was called "ex".
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
模式转换:
编辑模式-->输入模式
i:insert:在光标所在处输入
a:append:在光标所在处后方输入
o:在光标所在处的下方打开一个新行
I:在光标所在行的行首输入
A:在光标所在行的行尾输入
O:在光标所在处的上方打开一个新行
输入模式-->编辑模式:
ESC
编辑模式-->末行模式
:
末行模式-->编辑模式
两次ESC;ESC,ESC
锁定和解锁:Ctrl+s、Ctrl+q
关闭文件:
编辑模式下:
ZZ:保存并退出
ZQ:不保存退出
末行模式:
q退出
q! 强制退出,不保存此前的编辑操作
wq 保存退出
x 保存并退出
w写(存)磁盘文件
r filename 读文件内容到当前文件中
w /path/to/somefile
!command执行shell命令
r!command将shell命令的标准输出,存入当前文件中
光标跳转:
字符间跳转:
h:左
j:下
k:上
l:右
#COMMAND:跳转由#指定的个数的字符
当前页跳转:
H:页首
M:页中间行
L:页底
单词间跳转:
w:下一个单词的词首
b:当前或前一个单词的词首
e:当前或后一个单词的词尾
#COMMAND:跳转由#指定的个数的单词
行首行尾跳转:
^:跳转至行首的第一个非空白字符;
0:跳转至行首
$:跳转至行尾
行间跳转:
G:最后一行
#G:跳转至由#指定的行
1G或者gg:跳转至第一行
句间跳转:(不常用)
( 上一句
)下一句
#( 上#句
#) 下#句
段间跳转
{ 上一段
} 下一段
#{ 上#段
#} 下#段
翻屏:
Ctrl+u:向文件首部翻半屏
Ctrl+d:向文件尾部翻半屏
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Enter:按行向后翻
vim编辑命令:
字符编辑
x:删除光标所在处的字符
#x:删除光标所在处起始的#个字符
xp:交换光标所在处的字符与其后面的字符的位置
~:转换大小写
替换命令(replace)
r:替换光标所在处的字符
rCHAR
R:切换为REPLACE模式
删除命令
d:删除命令,可结合光标跳转字符,实现范围删除
d$:
d^:
d0:
dw:
de:
db:
#COMMAND
dd:删除光标所在处的行
#dd:删除光标所在处的行起始的共#行
D:从当前光标位置一直删除到行尾,留空行等同于d$
粘贴命令(paste)
P(小写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方
否则,粘贴至当前光标所在处的后面
p(大写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方,
否则,粘贴至当前光标所在处的前面;
复制命令:(yank)
y:复制,工作行为相似与d命令
yw
ye
yb
y$
y^
y0
#COMMAND
yy:复制一整行
#yy:复制#行
改变命令(change,c):
编辑模式-->输入模式,实现删除操作;
c$
c^
c0
cb
ce
cw
#COMMAND
cc:删除光标所在处的行,并转换为输出模式
#cc:
C:删除当前光标到行尾,并切换成插入模式
100isi[ESC]粘贴 "si"100次
<start position><command><end position>
Command:
y复制、d删除、gU变大写、gu变小写
例如0y$命令意味着:
0-->先到行头
y-->冲这里开始拷贝
$-->拷贝到本行最后一个字符
ye从当前位置拷贝到本单词的最后一个字符
vim可视化模式:
v:按字符选定
V:按行选定
Ctrl+v:面向块
结合编辑命令使用:d,c,y
可视化键可用于与移动键结合使用:
w,),},箭头等
突出显示的文件可以被删除,复制,变更,过滤,搜索/替换等
撤销(undo)操作:
u:撤销此前的操作
#u:撤销此前的#操作
U:撤销光标落在这行后所有此行的更改
撤销此前的撤销操作 recover
Ctrl+r
重复执行此前的命令
.:
#.:重复前一个操作#此
vim自带的练习教程:vimtutor
vim末行模式
内建的命令行接口
1、地址定界:start_pos,end_pos
$:最后一行
.:当前行
%:全文
#:表示特定的第#行,例如5即第5行
#,#:指定行范围,左侧为起始行,右侧为结束行
1,$
.,$-1
#,+#:指定行范文,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行
/first/,$
/pat1/,/pat2/
vim删除空白行
:g/^$/d
可同编辑命令一同使用,实现编辑操作:
d:删除
y:复制
c:修改、改变
w /path/to/somefile:将范围内的文本保存至指定的文件中;
r /path/from/somefile:将指定的文件中的内容读取到指定位置
2、查找
/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
n:下一个,与命令方向相同
N:上一个,与命令方向相反
3、查找并替换
s:末行模式的命令;使用格式:
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式
替换为的内容:不能使用正则表达式,但可以引用;
如果"要查找的内容" 部分在模式中使用分组符号:
在"替换为的内容中"使用后向引用
直接引用查找模式匹配到的全部文本,要使用&符号
修饰符:
i:忽略大小写
g:全局替换,一行中如果匹配到多次,则均替换
gc:全局替换,每次替换前询问
可把分隔符替换为其他非常用字符
*
@
实例:
%s@\<t\([[:alpht:]]\+\)\>@T\1@g
%s@\<\(f[[:alpha:]]\+\)\>@\1er@g 等同于 %s@\<f[[:alpha:]]\+\>@&er@g
%s@^#@@g
vim的多文件功能:
vim FILE1 FILE2...
在文件间切换:
next 下一个
prev(prevous) 上一个
first 第一个
last 最后一个
退出所有文件:
wqall 保存所有文件并退出
wall
qall
多窗口:
vim -o|O file1.txt file2.txt file3.txt
-o:水平分割窗口
-O:垂直分割窗口
在窗口直接切换:Ctrl+w,ARROW
注意:单个文件也可以水平分割为多个窗口进行查看:
Ctrl+w,s:split 水平分割窗口
Ctrl+w,v:vertical 垂直分割窗口
Ctrl+w,q:取消相邻窗口
Ctrl+w,o:取消全部窗口
:wqall:退出
定制vim的工作特性:
注意:在末行模式下的设定,仅对当前vim进程有效
永久有效:
全局:/etc/vimrc
用户个人:~/.vimrc
1、行号
显示:set number 简写为 set nu
取消:set nonumber 简写为 set nonu
2、括号匹配高亮
匹配:set showmatch set sm
取消:set noshowmatch set nosm
3、自动缩进
启用:set al auto indent
禁用:set noal
4、高亮搜索:
启用:set hlsearch highlight search
禁用:set nohlsearch
5、语法高亮:
启用:syntax on syntax 语法
禁用:syntax off
6、忽略字符大小写
启用:set ic ignore character
禁用:set noic
7、文件格式
set fileformat=unix
set fileformat=dos
8、设置文本宽度
set textwidth=65 (vimonly)
set wrapmargin=15
获取帮助
help
help Subject
help option-list
set or:set all
vi/vim内置帮助
help
help topic
use :q to exit help
# vimtutor 入门教程摘要







vim寄存器 vim有26个命名寄存器和一个无命令寄存器,常存放不同的剪贴板内容,可以不同会话间共享 用a,b,c...z表示,用"寄存器表示,放在数字和命令之间 如 3"ayy 表示复制3行到a寄存器中 "ap 表示将a寄存器内容粘贴 未指定,将使用无命名寄存器 有10个数字寄存器,用0,1,…,9表示, 0存放最近复制内容, 1存放最近删除内容。 当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享。 以二进制方式打开文件 vim -b binaryfile 扩展命令模式下,利用xxd命令转换为可读的十六进制 :%!xxd 编辑二进制文件 扩展命令模式下,利用xxd命令转换二进制 :%!xxd -r 保存退出 拓展: VIM中分行,使用替换命令,用正则匹配要分行的位置,然后替换换行符,但是在VIM中不能使用\n在替换的文本中,要用\r,如: :%s/--/\r/g 表示在所有“--”处进行分行。 VIM中删除空白行,: :g/^$/d :g/^\s*$/d \s*代表空白字符
原创文章,作者:sixijie,如若转载,请注明出处:http://www.178linux.com/34715

