编辑器
vim
语法:
vim [option]... file...
1)打开文件,让光标处于第#行;+默认行尾
vim +2 /etc/passwd #打开文件,光标处于第2行
2)让光标处于第一个被PATTERN匹配到的行的行首
+ /PATTERN
3)二进制打开文件
-b file
4)比较多个文件
-d file1 file2 ...
5)只读方式打开文件
-m file
6)直接进入ex模式
vim -e file 或ex file
vim:一个模式的编辑器
-------------命令模式下跳转-------------
字符跳转
h[←] j[↓] k[↑] l[→]
#command 跳转由#指定的个数的字符
单词跳转
w 下一个单词的词首
e 当前或下一个单词词尾 [end]
b 当前或前一个单词的词首 [before]
#command 由#指定一次跳转的单词数
当前页跳转
H 页首 M 页中 L 页底
zt 光标所在行移到屏幕顶端
zz 光标所在行移到屏幕中间
zb 光标所在行移到屏幕底端
行首行尾跳转
^ 行首第一个非空白字符
0 行首
$ 行尾
行间移动
#G 跳转至第#行尾;同ex模式下的":#"
G 最后一行
1G/gg 第一行
句间移动(句子是以"."隔开的)
) 下一句
( 上一句
段落间移动(有空行就算段落)
} 下一段
{ 上一段
翻屏
ctrl+f 向尾部翻一屏
ctrl+b 向首部翻一屏
ctrl+d 向尾部翻半屏
ctrl+u 向首部翻半屏
字符编辑
x 删除光标处字符
#x 删除光标处起始的#个字符
xp 交换光标处字符与其后字符位置
~ 转换大小写
J 删除当前行的换行符
替换
r 替换光标所在处的字符
R 切换成REPLACE模式
删除
d
d$
d^
d0
dw
de
db
dG
dgg
#command
dd 删除光标所在行
#dd 多行删除
D 同d$
复制
y
y$
y0
y^
ye
yw
yb
#command
yy 复制行
#yy
Y 复制整行
粘贴
P[大写] 复制的整行,光标所在行上方;否则,光标所在处前面
p[小写] 复制的整行,光标所在行下方;否则,光标所在处后面
改变命令:c,从命令模式-->插入模式
c$
c^
c0
cb
ce
cw
#command
cc 删除当前行并输入新内容,同S
#cc
C 删除当前光标到行尾
<start position> <command> <end position>
command:y d gU[变大写] gu[变小写]
di" 光标在""之间,删除""之间内容
yi( 光标在()之间,复制()之间内容
vi[ 光标在[]之间,选中[]之间内容
dtx 删除字符直到遇见光标之后的第一个x字符
ytx 复制字符直到遇见光标之后的第一个x字符
查找
/pattern 从当前光标所在处向文件尾部查找
?pattern 从当前光标所在处向文件首部查找
n 命令同方向
N 命令反方向
撤销
u 撤销最近的更改
#u 撤销之前多次更改
U 撤销光标落在这行后所有 此行的更改
ctrl +r 重做最后的"撤销"更改
. 重复前一个操作
#. 重复前一个操作#次
-------------扩展命令模式---------------
:start_pos,end_pos
# 第#行
#,@ 第#行,到第@行
#,+@ 第#行到第#+@行,
2行到5行表示:2,5或2,+3
. 当前行
$ 最后一行
% 全文,同1,$
/pattern/ 匹配pattern的行
/pat1/,/pat2/
#,/pat/
/pat/,#
可以在后接命令
d
y
w file
r file
查找替换
格式:
s/查询内容/替换内容/修饰符
查询内容:可使用模式
替换内容:不能使用模式,但可以使用\1,\2等后向引用符号;还可以使用"&"引用前面查找时查找到的整个内容
修饰符:
i 忽略大小写
g 全局替换
gc 全局替换,每次替换去询问
分隔符可使用:/ @ #
vim寄存器
寄存器使用语法:
数字+"寄存器+命令
3"tyy 复制3行到t寄存器中
"tp 将t寄存器内容粘贴
标记和宏
ma 当前位置标记为a [26个字母均可做标记]
'a 跳转到a标记的位置
qa 录制宏a
q 停止录制宏
@a 执行宏a
@@ 重新执行上次执行的宏
使用多个窗口
多文件分割:
vim -o|O file1 file2 ...
-o 水平分割
-O 垂直分割
窗口键切换
ctrl+按2次w
单文件窗口分割
:split 水平分割
ctrl+w+v 垂直分割
:wqall
ctrl+w+q 删除只剩一个窗口
vim特性定制:
全局:/etc/vimrc
个人:~/.vimrc
扩展命令模式下:当前vim进程有效
行号
set number/nonumber 简写:set nu/nonumber
忽略字符大小写
set ignorecase 简写 set ic/noic
自动缩进
set autoindent 简写:set ai/noai
复制保留格式
set paste/nopaste
显示tab和换行符,^I和^$显示
set list/nolist
高亮搜索
set hlsearch/nohlsearch
语法高亮
syntax on/off
文件格式
set fileformat=dos
set filefromat=unix
简写:set ff=dos/unix
设置文本宽度
set textwidth=65 (vim only)
set wrapmargin=15
设置光标所在行的标识线
set cursorline/nocursorline set cul
帮助
:help option-list
:set
:set all
vim内置帮助
:help
:help topic
:q 退出
vimtutor vim帮助手册