vim +# 打开文件后,让光标处于第#行的行首,+默认行尾
+/正则表达式 打开文件后,让光标处于匹配正则表达式的行首
-b 二进制方式打开文件
-d 比较多个文件
-m 只读打开文件
-e 直接进入ex模式
三种主要的模式:
命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
插入(Insert)模式或编辑模式:修改文本
扩展命令(extended)模式:保存,退出
Esc键,退出当前模式
2次Esc键,返回到命令模式
模式切换
插入→命令 Esc
命令→扩展 :
扩展→命令 Esc
命令→插入 i
扩展模式:
q 退出
q! 强制退出
wq 保存退出
x 保存退出
d 删除
y 复制
p 粘贴
r file 读file内容追加到当前文件中
w file 将当前文件内容写入另一个文件,另存为
!CMD 执行命令
r!CMD 读入命令的输出
# 第#行
#,# 从第#行到第#行
#,+# 2,,+3 表示第2行到第5行
. 当前行
$ 最后一行
% 全文
/part1/,/part2/ part1匹配至part2匹配
/ 从光标所在处向尾部查找
? 从光标所在处向首部查找
n 与命令同方向移动
N 与命令反方向移动
s@查找的内容@替换的内容@修饰符(不加修饰符,默认替换每行第一个)
i:忽略大小写
g:全局替换
gc:全局替换,替换前询问
命令模式:
ZZ 保存退出
ZQ 不保存退出
i 在光标处输入
x 剪切光标处的字符
#x 删除光标处起的#个字符
xp 光标处前后字符换位
p 粘贴,下方
P 粘贴,上方
u 撤销
#u 撤销#次
U 撤销到最早状态
ctrl+r 撤销最后的“撤销”
. 重复前一个操作
#. 重复前一个操作#次
~ 转换大小写
J 合并光标所在行和下一行
r 修改光标所在处字符
R 切换到REPLACE模式
d$ 删除到行尾,=D
d^ 删除到非空行首
d0 删除到行首
dw 删除到下一个单词的词首
de 删除到下一个单词的词尾
db 删除到前一个单词的词首
dd 删除整行
#dd 删除#行
y$ 复制到行尾,=Y
y^ 复制到非空行首
y0 复制到行首
yw 复制到下一个单词的词首
ye 复制到下一个单词的词尾
yb 复制到前一个单词的词首
yy 复制整行
#yy 复制#行
c$ 删除到行尾并切换到插入模式,=C
c^ 删除到非空行首切换到插入模式
c0 删除到行首切换到插入模式
cw 删除到下一个单词的词首切换到插入模式
ce 删除到下一个单词的词尾切换到插入模式
cb 删除到前一个单词的词首切换到插入模式
cd 删除整行切换到插入模式
#cc 删除#行切换到插入模式
d删除、y复制、c删除切换,配合跳转使用
字符间跳转 h:左 l:右 j:下 k:上 #h,l,j,k 跳转到#指定的个数的字符
单词间跳转 w:下一个单词的词首
e:下一个单词的词尾
b:前一个单词的词首
#w,e,b:由#指定一次跳转的单词数
当前页跳转 H:页首 M:页中间 L:页底
行首行尾跳转 0:行首 $:行尾 ^:行首的第一个非空字符
行间移动 #G:跳转到#指定行 G:最后一行 gg:第一行
句间移动 ):下一句 (:上一句
段落间移动 }:下一段 {:上一段
ctrl+f:向文件尾部翻一页 ctrl+b:向文件首部翻一页
ctrl+d:向文件尾部翻半页 ctrl+u:向文件首部翻半页
start CMD end
CMD:y,d,gU变大写,gu变小写
例子0y$
0→先到行首
y→从这里开始拷贝
$→拷贝到本行最后一个字符
100iwang[ESC]粘贴“wang”100次
插入模式:
I 光标所在行的行首输入
a 光标后面输入
A 光标所在行的行尾输入
o 光标的下方打开新一行
O 光标的上方打开新一行
可视化模式(命令模式下操作)
v 面向字符
V 面向行
ctrl+v 面向块
多文件显示
vim file1 file2
:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:wqall
多文件窗口分屏
vim -o file1 file2
o 水平分割
O 垂直分割
切换窗口:ctrl+w+方向键
单文件窗口分屏
ctrl+w+s 水平分割
ctrl+w+v 垂直分割
ctrl+w+q 取消相邻窗口
ctrl+w+o 取消全部窗口
寄存器
有26个命令寄存器和1个无命名寄存器,常存放不同的剪贴板内容,可以不同会话间共享
寄存器名字a,b,..,z格式:"寄存器 放在数字和命令之间
如:3"tyy 表示复制3行到t寄存器中
"tp 表示将t寄存器内容粘贴
未指定,将使用无命名寄存器
有10个数字寄存器,用0,1,..,9表示,0存放最近复制内容,1存放最近删除内容,当新的文本
变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享
定制vim工作界面:
全局:/etc/vimrc 个人:~/.vimrc
1)行号
显示:set nu
不显示:set nonu
2)忽略大小写
启用:set ic
不忽略:set noic
3)自动缩进
启用:set ai
禁用:set noai
4)只能缩进
启用:set si
禁用:set nosi
5)高亮搜索
启用:set hlsearch
禁用:set nohlsearch
6)语法高亮
启用:syntax on
禁用:syntax off
7)显示Tab和换行符
启用:set list
禁用:set nolist
8)设置光标所在行的标示线
启用:set cul
禁用:set no cul
9)复制保留格式
启用:set paste
禁用:set nopaste
10)文件格式
Windows:set ff=dos
Unix: set ff=unix