vim
1. vim简介
- vi:visualinterface,文本编辑器
- 文本:ASCII,Unicode
- 文本编辑种类:
行编辑器:sed
全屏编辑器:nano ,vi
vim – vi improved - 其他编辑器:
gedit 一个简单的图像编辑器
gvim 一个vim编辑器的图形版本
2.打开文件
- #
vim [option]...file...
+#:打开文件后,让光标处于第#行的行首,+默认行尾
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
-b file 二进制方式打开文件
-d file1 file2…比较多个文件 - ex file或vim -e 直接进入ex模式
- 如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
3. vim:一个模式编辑器
- 击键行为是依赖于vim的的“模式”
- 三种主要模式
命令(normal)模式:默认模式,移动光标,剪贴/粘贴文本
插入(insert)或编辑模式:修改文本
扩展命令(extendedcommand)模式:保存,退出等 - Esc键 退出当前模式
- ESc键ESc键总是返回到命令模式
4.模式转换
- 命令模式–>插入模式
i
:insert,在光标所在处输入
I
:在光标所在行的行首输入
a
:append。在光标所在处的后面输入
A
:在光标所在行的行尾输入
o
:在当前光标所在行的下方打开一个新行
O
: 在当前光标所在行的上方打开一个新行 - 插入模式------>命令模式
ESC
- 命令模式------>扩展命令模式
:
- 扩展命令模式------>命令模式
ESC
,enter
5.扩展模式
- 按":"进入ex模式
- 创建一个命令提示符:处于底部的屏幕左侧
- 命令
w
写(存)磁盘文件
wq
写入并退出
x
写入并退出
q
退出
q!
不存盘退出,即使更改都将丢失
r filename
读文件内容到当前文件中
w filename
将当前文件内容写入另一个文件
!command
执行命令
r!command
读入命令的输出
6.关闭文件
- 扩展模式:
:q
退出
:q!
强制退出,丢弃做出的修改
:wq
保存退出
:x
保存退出 - 命令模式:
ZZ
: 保存退出
ZQ
: 不保存退出
7.命令模式光标跳转
- 字符间跳转:
h
: 左l
:右j
:下k
:上 - 单词间跳转:
w
: 下一个单词的词首
e
: 当前或下一单词的词尾
#command
:由#指定一次跳转的单词数 - 当前页跳转:
H
:页首M:
页中间行L
:页底 - 行首行尾跳转:
^
: 跳转至行首的第一个非空白字符
0
: 跳转至行首
$
: 跳转至行尾 - 行间移动:
#G、扩展模式:# :跳转至由#指定行
G:最后一行
1G,gg:第一行 - 句间移动:
) : 下一句 ( : 上一句 - 段落间移动:
} :下一段 { :上一段
Ctrl+v+[[1;31mred Ctrl+v+[ [0m 显示红色字体(vim) echo -e "\e[1;31mred\e[0m" echo -e "\033[1;31mred\033[0m"
8.命令模式翻屏操作
-
Ctrl+f:向文件尾部翻以屏
-
Ctrl+b:向文件首部翻一瓶
-
Ctrl+d: 向文件尾部翻半屏
-
Ctrl+u: 向文件首部翻半屏
9.命令模式操作
-
字符编辑:
x: 删除光标处的字符
#x: 删除光标处起始的#个字符
xp:交换光标所在处的字符以及其后面字符的位置
~:大小写转换
J: 删除当前行后的换行符 -
替换命令(r,replace)
r: 替换光标所在处的字符
R:切换成replace模式 -
删除命令
d: 删除命令,可结合光标跳转字符,实现范围删除 d$: 删除到行尾 d^: 删除到非空行首 d0: 删除到行首 dw: de: db: #command
-
dd: 删除光标所在的行
#dd: 多行删除 -
D:从当前光标位置一直删除到行尾,留空行,等同于d$
-
复制命令(y,yank):
y: 复制,行为类似于d命令
y$: 复制到行尾
y^:复制到非空行首
y0: 复制到行首
yw:
ye:
yb:
#command -
yy:复制行:
#yy:复制多行 -
Y: 复制整行
-
粘贴命令(p,paste):
p: 缓冲区的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
p: 缓冲区的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面 -
改变命令(c,change)
c: 修改后切换插入模式 -
命令模式—>插入模式
c$
c^
c0
cb
ce
cw
#command -
cc:删除当前行并输入新内容,相当于S
#cc: -
C: 删除当前光标到行尾,并切换成插入模式
-
100iwabg[ESC] 粘贴 “wang”一百次
-
command
y 复制 、 d删除、gU变大写、gu变小写
例如0y$命令意味着:
0–>先到行头
y–>从这里开始拷贝
$–>拷贝到本行最后一个字符
ye从当前位置拷贝到本单词的最后一个字符
10.扩展命令模式:地址定界
- 地址定界
:start_pos,end_pos
#具体第#行,例如2表示第2行
#,# 从左侧#表示的起始行,加上右侧#表示结束行
#,+# 从左侧#表示的起始行,加上右侧#表示的行数
:2,+3 表示2到5行
. 当前行
$ 最后一行
., − 1 当 前 行 到 倒 数 第 二 行 -1 当前行到倒数第二行 % 全文,相当于1, −1当前行到倒数第二行 - /pat1,/pat2
从第一次被pat1模式匹配的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/
/pat/,$ - 使用方式:后更一个编辑命令
d
y
w file: 将范围内的行另存至指定文件中
r file:在指定位置上插入指定文件中的所有内容
:1,5d
: 2.+3d
:2,.d
11.扩展命令模式:查找
- 查找
/pattern: 从当前光标所在处向文件尾部查找
?pattern: 从当前光标所在处向文件首部查找
n : 与命令同方向
N :与命令反方向 - 扩展命令模式:查找并替换
(1). s: 在扩展模式下完成查找替换查找
格式: s/要查找的内容/替换为的内容/修饰符
替换为的内容:不能使用模式。单可以使用\1,\2,…等后向引用;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g:全局替换;默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问
(2) .查找替换中的分隔符/可替换为其他字符,例如
s@/etc/@/var@g
s#/etc/#/var#g
13.命令模式:撤销更改
-
u撤销最近的更改
-
#u撤销之前多次 更改
-
U撤销光标在这行后所有此行的更改
-
按Ctrl-r重做最后的“撤销”更改
-
.
重复前一个操作 -
n. 重复前一个操作n此
13.vim的寄存器
- 有26个命名寄存器和1个无名寄存器,常存放不同的剪贴版内容,可以不同会话键共享
- 寄存器名称a,b,…z,格式:“寄存器” 放在数字和命令之间
如:3"tyy 表示复制3行到t寄存器中
“tp 表示将t寄存器内容粘贴 - 未指定,将使用无命名寄存器
- 有10个数字寄存器,用0,1,…9表示,0存放最近复制内容,1存放最近删除内容
当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享
14.编辑二进制文件
- 以二进制方式打开文件
vim -b binaryfile - 扩展命令模式下,利用xxd命令转换为可读的十六进制
:%!xxd - 编辑二进制文件
- 扩展命令模式下,利用xxd命令转换为二进制
:%!xxd-r - 保存退出
15.可视化模式
- 允许选择的文本块
v面向字符
V面向行
Ctrl-v面向块 - 可视化键可用于与移动键结合使用:
w ) } 箭头等 - 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
16.多文件模式
vim file1 file2 file3 ...
:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:wqall
17.使用多个“窗口”
- 多文件分割
vim -o|O file1 file2 …
-o: 水平分割
-O:垂直分割
在窗口间切换: Ctrl+w,Arrow - 单文件窗口分割:、
ctrl+w,s:split,水平分割
Ctrl+w,v:vertical,垂直分割
ctrl+w,q: 取消相邻窗口
Ctrl+w,o: 取消全部窗口
:wqall 退出
18.定制vimde 工作特性
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
扩展模式:当前vim进程有效
- 行号
显示:set number,简写为set nu
取消显示:set nonumber简写为set nonu - 忽略字符的大小写
启动:set ic
不忽略:set noic - 自动缩进
启动:set ai
不启动:set noai - 智能缩进
启动:smartindent 简写 set si
禁用:set nosi - 最高搜索:
启动:set hlserch
禁用:set nohlsearch - 语法高亮:
启动:syntax on
禁用:syntax off - 显示tab和换行符^I和$显示
启动:set list
禁用:set nolist - 文件格式
启动Windows格式:set fileformat=dos
启动Unix格式:set fileformat=unix
简写:set ff=dos |unix - 设置文本宽度
启动:settextwidth=65(vim only)
禁用:set wrapmargin=15 - 设置光标所在行的标志线
启动:set cursorline ,简写cul
禁用:set no cursorline
19.了解更多
- set帮助
:help option-list
:set or :set all - vi/vim内置帮助
:help
:help topic - vimtutor