Vim备忘
建议结合tmux使用,多开一个pane使用make或者使用tftp传输文件等。
Ctrl+b z可以最大化当前pane,不用的时候再Ctrl+b z回到原窗口。
- 唯手熟尔
1. Vim的模式
Vim模式转换关系。
graph LR
cmd((命令模式))
input((输入模式))
normal((正常模式))
visual((可视模式))
normal--i/I a/A o/O-->input
input--ESC-->normal
normal--v/V/Ctrl+v-->visual
visual--ESC-->normal
normal--:-->cmd
cmd--ESC-->normal
正常模式:一般用于浏览文件,也包括一些复制、粘贴、删除等操作。
命令模式:编辑器配置,文本查找和替换,文本块选择等。
输入模式:文本输入和编辑。
可视模式:模拟鼠标操作
2. Vim退出
命令 | 说明 |
---|---|
:q | 退出未被编辑的文件 |
:q! | 强行退出vi,丢弃所做改动 |
:x | 存盘退出vi |
:wq | 存盘退出vi |
ZZ | 等同于:wq |
3. 光标移动
上下左右移动
在命令行下光标移动的方法:
命令 | 说明 |
---|---|
k、Ctrl+P、<up_arrow> | 向上移动,前面可以加数字表示移动多少行 |
j、Ctrl+N、<down_arrow> | 向下移动,前面可以加数字表示移动多少行 |
h、Backspace、<left_arrow> | 向左移动 |
l、Space、<right_arrow> | 向右移动 |
移动到指定字符
参考“查找”部分。
词移动
命令 | 说明 |
---|---|
w | 向前移动,光标停在下个单词词首,每次一个单词 |
W | 向前移动,光标停在下个单词词首,每次一个字符串 |
b | 向后移动,光标停在前个单词词首,每次一个单词 |
B | 向后移动,光标停在前个单词词首,每次一个字符串 |
e | 向前移动,光标停在前个单词词尾,每次一个单词 |
E | 向前移动,光标停在前个单词词尾,每次一个字符串 |
行移动
光标快速定位。快速显示当前行?
命令 | 说明 |
---|---|
I | 光标进入行首并进入编辑模式。 |
A | 光标移至行尾并进入编辑模式。 |
G | 将光标定位到最后一行 |
nG | 将光标定位到第n行 |
gg | 将光标定位到第1行 |
ngg | 将光标定位到第n行 |
:n | 将光标定位到第n行 |
页面窗口以及大范围移动
命令 | 说明 |
---|---|
Ctrl+f/PageUp | 向上翻页,前面可以加数字来表示翻多少页 |
Ctrl+b/PageDown | 向下翻页,前面可以加数字来表示翻多少页 |
Ctrl+d | 向上翻半页 |
Ctrl+u | 向下翻半页 |
Ctrl+e | 向下滚动 |
Ctrl+y | 向上滚动 |
zt | 光标所在行移动到窗口的顶部,侧重浏览 |
zz | 光标所在行移动到窗口的中间,侧重浏览 |
zb | 光标所在行移动到窗口的底部,侧重浏览 |
H | 光标移动到窗口的顶部,侧重窗口内编辑移动 |
M | 光标移动到窗口的中间,侧重窗口内编辑移动 |
L | 光标移动到窗口的底部,侧重窗口内编辑移动 |
n% | 移动到n%的位置 |
窗口移动
命令 | 说明 |
---|---|
Ctrl+w h/j/k/l | 窗口间上下左右移动 |
Ctrl+w H/J/K/L | 窗口本身上下左右移动 |
4. 文本选择
命令 | 说明 |
---|---|
v | 字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。 |
V | 行可视化模式(Linewise visual mode)。文本选择是以行为单位的。 |
Ctrl+v | 块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。 |
5. 查找
命令 | 说明 |
---|---|
/ | 向下查找 |
? | 向上查找 |
q/ | 在vim最下方开个新的窗口向下查找 |
q? | 在vim最下方开个新的窗口向上查找 |
n | 跳到下一个 |
N | 跳到上一个 |
6. 文本编辑
6.1 文本输入
在命令行模式下输入编辑命令(i/I、a/A、o/O),就可以进入输入模式,Vi左下角将会提示“插入”字样。
Vi的编辑命令。
命令 | 说明 |
---|---|
a | 在当前光标后面开始插入 |
A | 在当前行行末开始插入 |
i | 在当前光标前开始插入 |
I | 在当前和光标行行首开始插入 |
o | 从当前光标开始下一行开始插入 |
O | 从当前光标开始前一行开始插入 |
6.2 文本处理
文本块选定
ESC+v
复制和粘贴【*】
y复制,p粘贴,yny复制n行。
插入模式下粘贴
Ctrl + r
剪切和删除
剪切
命令 | 说明 |
---|---|
x或nx | 从光标开始的一个或者n个字符 |
X和nX | 剪切光标前的一个或者n个字符 |
删除
命令 | 说明 |
---|---|
dd | 删除光标所在的行 |
D | 删除从光标开始位置到行尾 |
dw | 删除从光标位置至该词末尾的所有字符 |
d0 | 删除从光标开始至行首 |
dnd | 删除光标所在行开始的n行 |
dnG | 将光标所在行至第n行删除 |
7. 文件浏览
Vim下面原生的文件浏览
命令 | 说明 |
---|---|
:Ex | 在当前窗口浏览完之后直接打开文件 |
:Vex | 垂直分出来的一个窗口浏览文件 |
:Sex | 水平分出来的一个窗口浏览文件 |
在窗格间切换的方法
Ctrl+w+方向键——切换到前/下/上/后一个窗格
Ctrl+w+h/j/k/l ——同上
Ctrl+ww——依次向后切换到下一个窗格中
插件的话推荐defx,NERDTree很久不更新了,不建议。
8. Vim配置
显示行号:
设置命令 | 说明 |
---|---|
nu/number | 显示行号 |
nu! | 切换显示/不显示行号 |
nonumber | 不显示行号 |
查找设置:
设置命令 | 说明 |
---|---|
incsearch | 即时查看找到的结果 |
hlsearch | 对匹配的所有项目进行高亮显示 |
ignorecase | 忽略大小写 |