-
命令模式(command-mode)
-
插入模式(insert-mode)
-
可视模式(visual-mode)
-
正常模式(normal-mode)
打开gvim都是正常模式,在任何模式下,只要按下
Esc
键就可以返回正常模式。
插入模式则用来向文本中添加内容。
i 在光标所在字符前开始输入文字并进入插入模式
o (字母o)在光标所在行的下面单独开一新行来输入文字并进入插入模式
可视模式相当于高亮选取文本后的普通模式,后边可以单独对这些选中的部分进行操作。
使用V键进入(也就是Shift+v)。
使用Ctrl+v键进入。
多用于操作文本文件,例如查找、替换、保存文件;或者用来改变编辑器本身的状态,例如设定多窗口、多标签、分屏显示或者退出编辑器。
使用Shift+:进入。
| 快捷键 | 说明 |
|---|
| gg | 光标跳到全文首 |
| Shift+g | 光标跳到全文末尾 |
| 90↓ | 光标向下移动多行,比如90行 |
| 13→ | 光标向右移动多列,比如13列 |
| ^ | 光标移动到行首第一个非空白字符 |
| $ | 光标移动到行尾 |
| Shift+g | 光标跳到全文末尾 |
| b | 光标移动到所在单词词首,向前跳(也就是向左跳) |
| w | 光标移动到所在单词词首,向后跳(也就是向右跳) |
| :n | 光标跳转到第n行 |
| $ | 光标移动到行尾 |
| :set nu | 显示行号 |
| Ctrl+g | 显示总行数和所在行所占百分比 |
在(处按%就会跳转到对应的)处,非常适合查找括号是否配对。反之,从)处按%键可以跳回对应的(处。
| 快捷键 | 说明 |
|---|
| [[ | 向前跳转到当前函数的{处 |
| ][ | 向后跳转到当前函数的}处 |
| [] | 向前跳转到上一个函数的}处 |
| ]] | 向后跳转到下一个函数的{处 |
| [# | 在#if和#else以及#endif之间向前跳转 |
| ]# | 在#if和#else以及#endif之间向后跳转 |
| [( | 表示跳转到当前区块*的( 处 |
| ]) | 跳转到当前区块的) 处 |
| [{ | 跳转到当前区块的{处 |
| ]} | 跳转到当前区块的}处 |
| [/ | 跳转到注释的/*处 |
| ]/ | 跳转到注释的*/处 |
多用于C语言中,黄色部分可以用于Verilog中。
帮助记忆:
第一个键是方向键
[表示向前跳转,] 表示向后跳转。
第二个是功能键
[表示当前函数,] 表示越过当前函数的上一个或者下一个函数。
{表示当前区块的{ 处, } 表示当前区块的 } 处。
| 快捷键 | 说明 |
|---|
| Ctrl+f | 向下翻一页 |
| Ctrl+b | 向上翻一页 |
| Ctrl+d | 向下翻半页 |
| Ctrl+u | 向上翻半页 |
| Ctrl+e | 向下滚动一行 |
| Ctrl+y | 向上滚动一行 |
| n% | 滚动到文件n%的位置 |
| zz | 将当前行移动到屏幕中央 |
| zt | 将当前行移动到屏幕顶端 |
| zb | 将当前行移动到屏幕底端 |
当光标位于某一文件的绝对路径或者相对路径时,如果需要跳转到任何一个文件,有几种方法,首先需要切换到normal模式,之后按下:
| 快捷键 | 说明 |
|---|
| gf | 在当前窗口中打开该文件 |
| ctrl+w f | 以分屏模式打开该文件(水平分屏) |
| ctrl+w gf | 在新的tab中打开该文件 |
| :tabc | 关闭本tab |
| 快捷键 | 说明 |
|---|
| yy | 复制光标所在行 |
| p | 光标后粘贴 |
| 6yy | 复制光标所在行及向下6行 |
| yw | 复制一个单词 |
| :%y+ | 复制全文 |
| +y | 复制内容供其他程序使用 |
| y0 | 复制光标前一直到行首的内容 |
| y$ | 复制光标所在处一直到行尾的内容 |
| :5,10y | 复制第5行~第10行的内容 |
| :,13y | 复制光标所在行到13行之间的内容 |
| :6,y | 复制6行到光标所在行之间的内容 |
| 左键确定选择的起点,右键确定选择的终点 | 随意选择文本 |
| 鼠标中键 | 粘贴 |
| 快捷键 | 说明 |
|---|
| :%s/被替换字符串/新字符串/g | 在当前整个文件中进行替换 |
| : s/被替换字符串/新字符串/ | 替换当前行第一个被替换字符串为新字符串 |
| : s/被替换字符串/新字符串/g | 替换当前行所有被替换字符串为新字符串 |
| :5,15s/被替换字符串/新字符串/g | 指定只在第5至第15行间进行替换 |
| :.,$s/被替换字符串/新字符串/g | 在当前行至文件结尾间进行替换 |
| :.,.+8s/被替换字符串/新字符串/g | 指定只在后续9行内进行替换 |
| r然后输入新字符 | 替换光标所在字符,也可以列操作 |
| 选中,u | 大写转小写 |
| 选中,shift+u | 小写转大写 |
| 快捷键 | 说明 |
|---|
| x | 删除光标所在字符 |
| dw | 删除光标所在字符直到词尾 |
| db | 删除光标所在字符直到词头 |
| d0 | 删除光标所在行中光标前的内容 |
| d$ | 删除光标所在行中光标后的内容 |
| 用鼠标选中你要删除的内容,然后按x/d | 删除某几行或者某几个单词 |
| dd | 删除光标所在行 |
| 5dd | 删除多行,如5行 |
| :n1,n2d | 从n1到n2行都会被删除 |
| dG | 删除全文 |
| :g/^\s*$/d | 删除全文中的空行 |
| 快捷键 | 说明 |
|---|
| /目标字符串 回车 | 查找目标字符串,结果将会高亮显示 |
| :/目标字符串 回车 | 查找目标字符串,结果将会高亮显示 |
| n | 查找下一处 |
| N | 查找上一处 |
| 快捷键 | 说明 |
|---|
| :vs | 将当前文件分裂成左右两个窗口 |
| Ctrl+w w | 在多个窗口切换 |
| Ctrl+w c | 关闭其中一个分屏 |
| :sp | 将当前文件分裂成上下两个窗口 |
| 快捷键 | 说明 |
|---|
| :w | 保存编辑后的文件内容,但不退出gvim编辑器 |
| :w! | 强制写文件,即强制覆盖原有文件 |
| :wq | 保存文件内容后退出gvim编辑器 |
| :wq! | 强制保存文件内容后退出gvim编辑器 |
| ZZ | 保存文件内容后退出gvim编辑器 |
| :q | 在未做任何编辑处理时退出gvim |
| :q! | 强制退出gvim编辑器,放弃编辑处理的结果 |
| :w filename | 把编辑处理后的结果写到指定的文件中保存 |
| :w! filename | 把编辑后的结果强制保存到指定文件中,若文件已经存在,则覆盖现有的文件 |
| :wq! filename | 把编辑后的结果强制保存到指定文件中,若文件已经存在,则覆盖现有文件,并退出gvim编辑器 |
gvimdiff file1 file2:比较file1与file2的区别,并高亮表示。
| 快捷键 | 说明 |
|---|
| ]c | 跳转到下一个差异点,命令前加上数字,可以跳过多个差异点 |
| [c | 跳转到上一个差异点,命令前加上数字,可以跳过多个差异点 |
| dp | 把一个差异点中当前文件的内容复制到另一个文件里 |
| do | 把另一个文件的内容复制到当前行中 |
| Ctrl-w w | 在两个文件之间跳转 |
| :diffupdate | 刷新对比结果 |
| :qa | 同时退出 |
| :wa | 保存全部文件 |
| :wqa | 保存全部文件,然后退出 |
| :qa! | 退出的时候不希望保存任何操作的结果 |
| zo | 临时展开被折叠的相同的文本行 |
| zc | 重新折叠相同的文本行 |
下图是我的寄存器的详细内容,可以由图看出多了一个+寄存器(它表示系统全局剪贴板),同一个vim打开多个文件是很方便复制粘贴,但是跨terminal就麻烦了,google了半天找到一个不错的办法,直接使用系统剪切版,干净简洁,配一个快捷键就完美了。
查询...
1 “选中一段代码,”
2 还有一种方法就是使用列模式, 在normal模式下使用ctrl+v选中要插入tab的位置, 然后使用“I"进入插入模式, 输入一个或多个tab即可.
3 如果是c语言的话, 一个最nb的功能就是自动排序, "="命令, shift+v选择全文件, 然后"="
要想单行自动对齐, 请使用"==".
2. 多行注释