建议结合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 | 忽略大小写 |