vim 是文本编辑器
vim 选项 文件
+#
打开文件后,光标跳到第#行-d 文件1 文件2
对两个文件进行比较
vim 三个模式
- 命令模式 默认模式,按Esc就会回到命令模式,切换任何模式之前,都需要先退回命令模式
- 插入模式 按i进入
- 扩展命令模式 输入: 进入
模式切换
命令模式 --> 插入模式
i
insert, 在光标所在处输入I
在当前光标所在行的行首输入a
append, 在光标所在处后面输入A
在当前光标所在行的行尾输入o
在当前光标所在行的下方打开一个新行O
在当前光标所在行的上方打开一个新行
关闭文件
扩展命令模式:
:q
退出:q!
强制退出,丢弃做出的修改:wq
保存退出:x
保存退出
命令模式
ZZ
保存退出ZQ
不保存退出
扩展命令模式
常见命令
w
写(存)磁盘文件wq
写入并退出x
写入并退出q
退出q!
不存盘退出,即使更改都将丢失r filename
读文件内容到当前文件中w filename
将当前文件内容写入另一个文件,也可以当作另存为!!command
执行命令r!command
读入命令的输出,将命令执行的结果读入到光标位置
命令模式光标跳转
字符间跳转
h
:左 j
:下 k
:上 l
:右
#COMMAND
:执行COMMAND命令#号遍
当前页跳转:
H
:页首M
:页中间行L
:页底
行首行尾跳转:
^
跳转至行首的第一个非空白字符0
跳转至行首$
跳转至行尾
行间移动:
#G
或者扩展命令模式下:#
跳转至由第#行G
最后一行H
行首1G
或者gg
第一行
命令模式翻屏操作
Ctrl+f
向文件尾部翻一屏Ctrl+b
向文件首部翻一屏Ctrl+d
向文件尾部翻半屏Ctrl+u
向文件首部翻半屏
命令模式操作
字符编辑:
x
删除光标处的字符,相当于剪切#x
删除光标处起始的#个字符xp
交换光标所在处的字符及其后面字符的位置~
转换大小写J
删除当前行后的换行符
删除命令:
d
删除命令,可结合光标跳转字符,实现范围删除d$
删除到行尾d^
删除到非空行首d0
删除到行首dw
删除到词尾dG
删除到页尾dH
删除到页首dd
删除光标所在的行 属于剪切#dd
多行删除,删除从光标数起#行D
从当前光标位置一直删除到行尾,等同于d$
复制命令
y
复制,行为相似于d命令y$
复制到行尾y^
复制到非空行首y0
复制到行首yw
复制词尾yy
复制行#yy
复制多行- 多行复制 33,42 co 25 复制从33行到42行,粘贴到25行后面
粘贴命令
- p(小p) 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘 贴至当前光标所在处的后面
- P(大p) 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘 贴至当前光标所在处的前面
选中多行:
使用命令vim打开文件,移动光标至所选行的开头,按v进入视图,键盘上按向下键,选中所需行即可。
命令模式下的其他操作
-
100iwang [ESC] 粘贴“wang”100次
-
常见Command
y 复制、d 删除、gU 变大写、gu 变小写
例如:0y$
命令
0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符
di"
光标在”“之间,则删除”“之间的内容yi(
光标在()之间,则复制()之间的内容vi[
光标在[]之间,则选中[]之间的内容dtx
删除字符直到遇见光标之后的第一个 x 字符ytx
复制字符直到遇见光标之后的第一个 x 字符
扩展命令模式:地址定界
- 地址定界
:start_pos,end_pos
#
具体第#行,例如2表示第2行
#,#
从左侧#表示起始行,到右侧#表示结尾行
#,+#
从左侧#表示的起始行,加上右侧#表示的行数
示例:2,+3 表示2到5行
.
当前行
$
最后一行
.,$-1
当前行到倒数第二行
%
全文, 相当于1,$
命令模式:查找
查找
/PATTERN
:从当前光标所在处向文件尾部查找
?PATTERN
:从当前光标所在处向文件首部查找
n
:正方向搜索 向下查找下一个
N
:反方向搜索 向上查找上一个
命令模式:撤消更改
u
撤销最近的更改#u
撤销之前多次更改U
撤消光标落在这行后所有此行的更改Ctrl - r
重做最后的“撤消”更改,也就是取消最后一个撤销.
重复前一个操作#.
重复前一个操作#次
扩展命令模式:查找并替换
- 在扩展命令模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
s前面也可以加其他定位命令
要查找的内容:可使用正则表达式
替换为的内容:不能使用正则表达式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
+ i 忽略大小写
+ g 全局替换,默认情况下,每一行只替换第一次出现
+ gc 全局替换,每次替换前询问 - 查找替换中的分隔符/可替换为其它字符
+ s@/etc@/var@g 将查找到的全部/etc换成/var,
+ s#/boot#/#i 将查找到的所有/boot替换成/,并且忽略大小写
举例
:s/a1/a2/g
将当前光标所在的行中的所有a1均用a2替换
:n1,n2s/a1/a2/g
将文件第n1至n2行中所有a1均用a2替换
如果需要替换所有,需要再s前面添加%,表明本文本的所有文字
否则,光标需要放在需要修改的搜索词上
或者 在前面加g
例如
:g/a1/s//a2/g
将文件中所有的a1均用a2替换
可视化模式
- 允许选择的文本块
v 面向字符
V 面向行
ctrl-v 面向块 - 可视化键可用于与移动键结合使用
w ) } 箭头等 - 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
定制vim的工作特性
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
扩展命令模式:当前vim进程有效
- 行号
显示:set number,简写 set nu
取消显示:set nonumber, 简写 set nonu - 忽略字符的大小写
启用:set ignorecase,简写 set ic
不忽略:set noic - 自动缩进
启用:set autoindent,简写 set ai
禁用:set noai - 复制保留格式
启用:set paste
禁用:set nopaste - 显示Tab和换行符 ^I 和$显示
启用:set list
禁用:set nolist - 高亮搜索
启用:set hlsearch
禁用:set nohlsearch - 语法高亮
启用:syntax on
禁用:syntax off - 文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写 set ff=dos|unix - 设置文本宽度
set textwidth=65 (vim only)
set wrapmargin=15 - 设置光标所在行的标识线
启用:set cursorline,简写 set cul
禁用:set nocursorline