@toc
文本编辑器-vim
三种模式
命令模式:Normal(默认模式,可移动光标,剪切/粘贴文本)
插入模式:Insert(修改文本)
命令模式:Extended command(保存,退出等)
1.vim [option] file
[OPTION]
+NUM `打开后跳到NUM行`
+/PATTERN `跳到PATTERN匹配到的行`
-b file `二进制打开`
-d file1 file2 `比较文件`
-m file `只读打开`
-e file `ex模式`
说明:
如果file存在,则file被打开并显示内容
如果file不存在,在编辑后覅一次wq时新建file
2.命令模式
1.命令模式_光标跳转
字符间
| 命令 |
用途 |
| [NUM] h |
向左NUM个字符 |
| [NUM] l |
向右NUM个字符 |
| [NUM] j |
向下NUM个字符 |
| [NUM] k |
向上NUM个字符 |
单词间
| 命令 |
用途 |
| [NUM] w |
向下NUM个单词 |
| [NUM] e |
当前或下NUM个单词词尾 |
| [NUM] b |
当前或上NUM个单词词首 |
| 页面 |
|
| 命令 |
用途 |
| -- |
-- |
| H |
页首 |
| M |
页中 |
| L |
页底 |
| zt |
当前行移到顶 |
| zz |
当前行移到中 |
| zb |
当前行移到底 |
| 行间、句间、段落间 |
|
| 命令 |
用途 |
| -- |
-- |
| ^ |
行首(非空) |
| 0 |
行首 |
| $ |
行尾 |
| NUM G |
跳到NUM行 |
| G |
尾行 |
| gg |
首行 |
| ( |
上一句 |
| ) |
下一句 |
| { |
上一段 |
| } |
下一段 |
| vim中翻屏快捷键 |
|
| ctrl+f:向下一屏 |
|
| ctrl+b:向上一屏 |
|
| ctrl+d:向下半屏 |
|
| ctrl+u:向上半屏 |
|
2.命令模式-字符操作
| 命令 |
用途 |
| [NUM] x |
删除当前NUM个字符 |
| p |
粘贴x删除的字符 |
| ~ |
大小写转换 |
| gu |
变小写 |
| gU |
变大写 |
| J |
删除当前行的换行符 |
| r |
替换当前字符 |
| R |
替换模式 |
| 删除命令 |
|
| 命令 |
用途 |
| -- |
-- |
| [NUM] d |
删除命令(结合以下命令使用) |
| d$或D |
删到尾 |
| d0 |
删到头 |
| d^ |
删到头(非空) |
| dw |
删除当前字符 |
| de |
后删单词 |
| db |
前删单词 |
| [NUM] dd |
删除NUM行 |
| 复制命令 |
|
| 命令 |
用途 |
| -- |
-- |
| [NUM] y |
复制命令(结合以下命令使用) |
| y$ |
复制到尾 |
| y0 |
复制到头 |
| y^ |
复制到头(非空) |
| yw |
复制当前字符 |
| ye |
复制后单词 |
| yb |
复制前单词 |
| [NUM] yy |
复制NUM行 |
| 粘贴命令 |
|
| 命令 |
用途 |
| -- |
-- |
| p |
往后粘贴 |
| P |
往前粘贴 |
| 改变命令 |
|
| 命令 |
用途 |
| -- |
-- |
| c |
修改进入插入模式(同下) |
| c$或c |
删到尾 |
| c0 |
删到头 |
| c^ |
删到头(非空) |
| cw |
删除当前字符 |
| ce |
删除后单词 |
| cb |
删除前单词 |
| [NUM] cc |
删除NUM行 |
| 查找命令 |
|
| 命令 |
用途 |
| -- |
-- |
| /PATTERN |
向下查找 |
| ?PATHERN |
向上查找 |
| n |
查找方向(对查找结果而言) |
| N |
查找反向(对查找结果而言) |
| 撤销更改 |
|
| 命令 |
用途 |
| -- |
-- |
| [NUM] u |
撤销NUM次 |
| U |
撤销行的所有改变 |
| ctrl+r |
重做 |
| [NUM] . |
重复前一个NUM个操作 |
3.vim的寄存器
vim一共有26个全名寄存器和1个无名寄存器
| 命令 |
用途 |
| 1"syy |
复制1行到s寄存器 |
| "sp |
粘贴s寄存器里的内容 |
4.标记、宏
| 命令 |
用途 |
| m |
将当前位置标记为a,可以标记26个{a-z}} |
| 'a |
跳转到标记a |
| qa |
录制宏a |
| q |
停止录制 |
| @a |
执行洪a |
| @@ |
重新执行上次的宏 |
3.扩展命令模式
1.关闭文件
| 命令 |
用途 |
| :q |
退出 |
| :q! |
强制退出 |
| :wq |
保存退出 |
| :x |
保存退出 |
| ZZ |
保存退出 |
| ZQ |
不保存退出 |
2.命令操作
| 命令 |
用途 |
| :w |
写(存)磁盘文件 |
| :r file |
读文件到当前文件中 |
| :w file |
将当前文件写到另一个文件中 |
| :!command |
执行命令 |
| :r!command |
把命令的结果写入当前文件 |
3.地址定界
地址定界+command
| 命令 |
用途 |
| :NUM |
跳转到NUM行 |
| :NUM,+NUM |
如:2,+3表示2,5行 |
| :. |
当前行 |
| 😒 |
最后行 |
| :% |
全文 |
| /STR1/,/STR2/ |
从匹配到STR1到STR2 |
| NUM,/STR/ |
从第NUM行到STR匹配行 |
| /STR/,$ |
从STR匹配行到结束 |
| command |
|
| 命令 |
用途 |
| -- |
-- |
| w file |
选中范围保存到文件file |
| r file |
选中范围保存到指定file |
| 示例 |
|
1.:1,3d
2.:/string1/,/string2/y
3.:/string1/,$r /data/file1
4.查找并替换
格式: s/要查的内容/要替换的内容/修饰符
要替换的内容: 1. 可以使用\1,\2括号引用。2. 可以使用&引用前面查找到的整个内容
修饰符
| 命令 |
用途 |
| I |
忽略大小写 |
| g |
每行替换1次 |
| gc |
全部替换 |
| 分隔符可以使用 |
|
1. s/string1/string2/g
2. s@string1@string2@gc
3. s#string1#string2#i
5.编辑二进制文件
1. vim -b binary_FILE
2. 命令模式下:
:%!xxd 十六进制
:%!xxd-r 二进制
4.可视化模式
命令模式下
5.多文件模式
vim file1 file2 file3
命令模式下
| 命令 |
用途 |
| :next |
下一个 |
| :prev |
上一个 |
| :first |
第一个 |
| :last1 |
最后一个 |
| :wall |
保存所有 |
| :qwall |
退出所有 |
| :wqull |
保存并退出所有 |
| 使用多窗口 |
|
vim -o file1 file2(水平分割)
vim -O file1 file2(垂直分割)
| 命令 |
用途 |
| Ctrl+w,w |
窗口间切换 |
| Ctrl+w,s |
水平分割 |
| Ctrl+w,v |
垂直分割 |
| Ctrl+w,q |
取消相邻窗口 |
| Ctrl+w,o |
取消所有窗口 |
6.定制vim的工作特性
1.配置文件
全局:/etc/vimrc
个人:~/.vimrc
2.扩展模式(临时有效)
| 命令 |
用途 |
| set [no]nu |
不显示行号 |
| set [no]ic |
不忽略大小写 |
| set [no]ai |
不自动缩进 |
| set [no]paste |
不复制保留格式 |
| set [no]si |
不智能缩进 |
| set [no]search |
不高亮搜索 |
| set [off]on |
关闭语法高亮 |
| set ff=dos |
unix |
| set textwidith=65,set wrapmargin=15 |
设置文本宽度 |
| set [no]cul |
不显示光标所在标识线 |
| set [no]list |
不显示tab和换行符 |
7.vim键盘图