vi/vim
打开文件
vim [option] .... file....
+# 直接定位到第#行
+/pattern 打开文件后,直接定位到第一个匹配到patter的地方
-b 以二进制方式打开文件
-d file1 file2 对比打开多个文件
-m file 只读方式打开文件
-e 直接以末行模式打开
模式
-
命令模式:可以光标,可以粘贴、复制文本,默认
-
插入模式或 者编辑模式:可以修改文本
-
末行模式(扩展命令模式):保存、退出等等
-
esc 退出当前的模式
模式之间切换
-
命令模式- 插入模式
-
i 光标所在处插入
-
I 在当前光标所在的行的行首插入
-
a 光标所在位置的后面插入
-
A 在当前光标所在的行尾插入
-
o 在当前光标所在的行的下一行(新开)插入
-
O 在当前光标所在的行的上一行(新开一行)插入
-
-
插入模式- 命令模式
-
esc
-
-
命令模式 -- 末行模式
-
:
-
-
末行模式 -- 命令模式
-
esc esc
-
esc enter
-
关闭文件
-
末行模式
-
:w 保存
-
:q 退出
-
:wq 保存并退出
-
:q! 强制退出
-
:wq!强制保存退出
-
:x 保存并退出
-
-
命令模式
-
ZZ 保存退出
-
ZQ 不保存退出
-
扩展命令行模式
-
按":" 来进入
-
w 写入
-
q 退出
-
wq 保存并退出
-
q! 强制退出
-
x 保存并退出
-
r file 读入文件
-
w file 另存为
-
!command 直接执行命令
-
r!command 直接把命令的结果写到文件中
命令模式跳转
-
字符之间跳转
-
l 向右
-
h 向左
-
j 向下
-
k 向上
-
-
单词间跳转
-
w 下一次的单词的词首
-
e 当前词的词尾或者下一个单词的词尾
-
b 当前词的词首或者上一词的词首
-
# command 直接跳转#个单词
-
-
页面间跳转
-
H 页首
-
L 页尾
-
M 页中
-
zt 将光标所在行移动到屏幕的顶端
-
zb 将光标所在行移动到屏幕的底部
-
zz 将光标所在行移动到屏幕的中间
-
-
行首行尾之间跳转
-
^ 跳转到当前光标所在行的第一个非空字符
-
0(数字) 跳转到行首
-
$ 跳转到行尾
-
-
行间移动
-
#G 跳转到第#行
-
在命令扩展模式下,直接:# 跳转到对应的行
-
G 直接到最后一行
-
gg 跳转到第一行
-
1G 跳转到第一行
-
-
段落之间跳转(空行)
-
{ 上一段
-
} 下一段
-
-
翻屏
-
ctrl+f 向文件尾部翻一屏
-
ctrl+b 向文件首部翻一屏
-
ctrl+d 向文件尾部翻半屏
-
ctrl+u 向文件首部翻半屏
-
命令模式编辑
-
字符编辑
-
x 删除光标所在处的字符
-
#x 删除#个字符
-
xp 将光标所在处的字符和后面的字符互换位置
-
~ 将光标所在的位置大小写互换
-
J 删除当前行的换行符
-
-
替换
-
r 替换当前光标所在处的字符
-
R 进入替换模式
-
-
删除
-
d 删除,需要跟字符跳转结合
-
d$ 删除到行尾,删除当前位置
-
d0 删除到行首,当前位置不删除
-
d^ 删除到非空字符
-
dw 删除一个单词
-
de 向后删除一个单词
-
db 向前删除一个单词
-
dd 删除正行
-
# dd 删除#行
-
dG 删除到结尾
-
dgg 删除到开头
-
D 相当于d$
-
-
复制
-
y,也可以跟字符跳转结合
-
y$
-
y0
-
y^
-
yw
-
ye
-
yb
-
yy 一正行
-
#yy 复制#行
-
yG 复制到结尾
-
ygg 复制到开头
-
Y 复制整行
-
-
粘贴
-
p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面
-
P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面
-
-
改变,删除以后并将模式切换成插入模式
-
c 可以跟光标的跳转做结合
-
c$
-
c0
-
c^
-
cw
-
ce
-
cb
-
#command
-
cc 删除正行并插入
-
C 相当于c$
-
-
#[i|I|a|A|o|O]string esc 将string粘贴#次
-
搜索
-
/pattern 从当前光标往下搜索
-
?pattern 从当前光标往上搜索
-
n 同命令相同的方向
-
N 同命令相反的方向
-
-
撤销
-
u 撤销最近的修改
-
# u 撤销最近的#次修改
-
ctrl +r 撤销之前的撤销动作
-
. 重复最后一次操作
-
#. 最后一次操作重复执行#次
-
命令扩展模式
地址定界
:start,end
# 具体到第#行
#,# 第#行到第#行
#,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3
. 表示当前光标所在的行
$ 表示最后一行
$-1 表示倒数第二行
% 表示全文
/pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方
#,/pat/ 从第#行开始,到第一次被pat匹配到的地方
/pat/,$ 从第一次被pat匹配到的到结尾
可以使用的命令
-
d
-
y
-
w file 重新另存为文件
-
r file 将文件的内容写到匹配到的下一行
查找并替换
-
要使用地址定界来进行查找
-
s 在扩展命令模式下使用为替换
-
格式: s/要查找的内容/要替换的内容/装饰器
-
要查找的内容可以使用正则
-
替换的内容不能为正则
-
可以为分组:%s/(nfs.*)/#1/
-
1表示第一个分组内的内容
-
2
-
3
-
& 可以代表前面匹配到的内容
-
-
装饰器
-
i 忽略大小写
-
g 表示全部替换
-
gc 每一次替换之前都要询问是否替换
-
-
分隔符还可以使用
-
@
-
#
-
可视化
-
v 面向字符
-
V 面向行的
-
ctrl +v 面向块
-
可以结合所有的跳转键进行结合
-
对突出显示部分可以使用删除、复制、变更、过滤、替换、另存为等等
打开多个文件
vim file1 file2 file3
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
:qall 退出全部
:wall 保存全部
:wqall 保存并退出全部
:xall 保存并退出全部
使用多个窗口
vim -o 水平分隔
vim -O 垂直分隔
切换ctrl+w 加上上下左右箭头
单文件切割
ctrl+w,s 水平切割
ctrl+w,v 垂直切割
ctrl+w,q 取消相邻的窗口
ctrl+w,o 取消全部窗口
vim工作特性
配置文件
-
全局有效:/etc/vimrc
-
对当前用户有效: ~/.vimrc
-
行号:set nu 取消 set nonu
-
忽略大小写(搜索) set ic 取消set noic
-
自动缩进(同上一行) set ai 取消set noai
-
设置高亮显示(搜索到的内容) set hls 取消set nohls
-
语法高亮 syntax on 取消 syntax off
-
文件格式
-
windows格式 set fileformat=dos
-
unix set fileformat=unix
-
-
添加标识线: set cul 取消标识线 set nocul
-
获取帮助: set all
-
获取帮助信息:
-
:help
-
-
vimtutor
-
-