Vim¶
Vi 是终端里的文本编辑器,Vim 是 Vi iMproved,即 Vi 编辑器的增强版,向上兼容
vi
和 vim
命令可以混用,是一样的
四种模式
普通模式¶
输入vi
或 vim
或 vi/vim file
则进入普通模式,其它模式下,通过ESC键回到普通模式
光标¶
在图形化或者远程终端使用键盘的方向键可以控制方向,但如果在字符终端,方向键可能会变成乱码,此时需要:h
(左) j
(下) k
(上) l
(右) 来控制
显示行号:
:set nu
- 移动到第一行:
gg
- 移动到最后一行:
G
(shift+g) - 移动到指定的行:
num
+G
- 移到行首:
^
(shift+6) - 移到行尾:
$
(shift+4)
操作¶
- 复制:yy,复制3行:3yy,复制到行尾:y$
- 剪切:dd,剪切3行:3dd,剪切到行尾:d$
- 粘贴:p
- 撤销:u
- 重做:ctrl+r
- 删除字符:x
- 替换:r
插入模式¶
普通模式下按i
(insert),进入插入模式,光标位置跟普通模式时一样,保持不变
a
光标到下一位I
大写使光标定位到行首A
光标到行尾o
在下一行插入空行O
在上一行插入空行
命令模式¶
普通模式下按英文冒号:
进入命令模式,又叫末行模式
:w [path] # 保存,可以接保存路径
:wq # 保存并退出
:q # 如果没有修改,直接退出
:q! # 如果有修改,强制退出,不保存
:! # 在不退出的情况下,临时执行一些shell命令,比如:!ls 然后按回车返回编辑器
:/ # 查找字符,如果有多个会定位在第一个结果
"""
n 切换到下一个
shift+n 切换到上一个
"""
:s/old/new # 替换当前光标所在行匹配到的第一个字符
:s/old/new/g # 替换当前光标所在行匹配到的所有字符
:%s/old/new # 替换全文匹配到的第一字符
:%s/old/new/g # 全局替换
:3,5s/old/new # 针对指定行替换
- 设置
:set nu # 显示行号
:set nonu # 不显示行号
:set nohlsearch # 不显示高亮
可视模式¶
普通模式下按v
进入字符可视模式,按V
进入行可视模式,按ctrl+v
进入块可视模式
比较常用的是块模式,进入后可以通过方向键选择块范围进行操作,比如选中后
- 按
d
删除 - 按
i
或I
进行插入,然后按两次esc
完成块操作
配置¶
Vim 是非常强大的,可以安装各种插件,参考:https://github.com/amix/vimrc
比如显示树形目录结构的插件 NERDTree