--- layout: post title: VIM tags: VIM Linux categories: special --- * TOC {:toc} ## 1.切换模式 `i` → Insert 模式,在光标前插入 `ESC` → 回到 Normal 模式,Normal 模式下,所有键都是功能键 `:help ` → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q) ## 2.存盘 & 退出 `:e file` → 打开一个文件 `:w` → 存盘 `:saveas file` → 另存为 `:x`, `ZZ` 或 `:wq` → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车) `:q!` → 退出不保存 `:qa!` 强行退出所有的正在编辑的文件,就算别的文件有更改。 `:bn` 和 `:bp` → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(`:n`到下一个文件) ## 3.插入 `a` → 在光标后插入 `o` → 在当前行后插入一个新行 `O` → 在当前行前插入一个新行 `cw` → 替换从光标所在位置后到一个单词结尾的字符 ## 4.删除 `x` → 删当前光标所在的一个字符。 `dd` → 删除当前行,并把删除的行存到剪贴板里 `d` → 删除,常用于组合 ## 5.拷贝 & 粘贴 `yy` → 拷贝当前行当行于 ddP `p` → 粘贴(小写后) `P` → 粘贴(大写前) `y` → 拷贝,常用于组合 >vim有12个粘贴板,分别是`0 1 2 ... 9 a " +`用`:reg`命令可以查看各个粘贴板里的内容,在vim中简单用`y`只是复制到`"`粘贴板里,同样用`p`粘贴的也是这个粘贴板里的内容。 > >* `"Ny` 指定`N`粘贴板复制(主意引号) > >* `+` 粘贴板是系统粘贴板,`"+y`复制,`"+p`粘贴 ## 6.定位 `hjkl` (←↓↑→) ### 6.1 行内定位 `0` → 数字零,到行头 `^` → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等) `$` → 到本行行尾 `g_` → 到本行最后一个不是blank字符的位置。 `fa` → 到本行下一个为`a`的字符处 `Fa` → 到本行上一个为`a`的字符处 `ta` → 到`a`前的第一个字符 `Ta` → 到`a`后的第一个字符 ### 6.2 行间定位 `NG` → 到第 `N` 行 (命令中的G是大写的) `:N` → 到第 `N` 行 `gg` → 到第一行。(相当于1G,或 :1) `G` → 到最后一行。 ### 6.3 全文定位 `w` → 到下一个单词的开头。(默认单词形式) `e` → 到当前单词的结尾。(默认单词形式) `W` → 到下一个单词的开头。(包含空格`?`) `E` → 到当前单词的结尾。(包含空格`?`) `%` → 到匹配的括号处,包括 `( { [` (需要把光标先移到括号上) `*` → 到`下一个`匹配单词 `# ` → 到`上一个`匹配单词 `/pattern` → 搜索 `pattern` 的字符串(需要回车,如果搜索出多个匹配,可按`n`键到下一个) ## 7.Undo & Redo `u` → undo ``→ redo ## 8.重复 `.` → (小数点) 可以重复`上一次`的命令 `N ` → 重复某个命令`N次`,command可以为`.` >使用`.`时,若上一次的命令为`N `,则原样执行`N ` > >使用`N `时,若`command`为`.`,则`N`会覆盖`.`自带的次数 ## 9.组合 * `` >例如 > >`0y$` → 从行头拷贝到行尾 > >`ye` → 从当前位置拷贝到本单词的最后一个字符 > >`y2/foo` → 拷贝2个foo之间的内容 ## 10.区域选择 `Na` 包括object `Ni` 不包括object * `action` 可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。 * `object` 可能是: `w` 一个单词, `W` 一个以空格为分隔的单词, `s` 一个句字, `p` 一个段落;也可以是成对出现的字符:`" ' ) } ]` * `N` 表示选取第N层,不写默认为1 ## 11.自动提示 `` 或 `` ## 12.宏录制 `qa` → 把操作记录在寄存器 `a` `q` → 停止录制 `@a` → replay`a`寄存器中的宏。 `@@` → replay最新录制的宏。 >示例: > >在一个只有一行且这一行只有“1”的文本中,键入如下命令: > >`qaYpq` > >`qa` 开始录制 > >`Yp` 复制行. > >`` 增加1. > >`q` 停止录制. 这个宏的作用是:复制上一行并增加1 测试: @a → 在1下面写下 2 @@ → 在2 正面写下3 现在做 100@@ 会创建新的100行,并把数据增加到 103. ## 13.可视化选择 `v` 可视 `V` 可视行 `` 可视块 选择了可视化范围后,可做如下操作: >* `J` → 把所有的行连接起来(变成一行) > >* `<` → 左缩进 > >* `>` → 右缩进 > >* `=` → 自动缩进 在所有被选择的行后加上点东西: `` 选中行 `$` 到行最后(不加将在每行行首编辑) `A` 块操作中进入插入模式 输入 `ESC` ## 14.分屏 `split` → 创建分屏 `vsplit` → 创建垂直分屏 `方向` → 方向可以是 hjkl 或 ←↓↑→,用来切换分屏。 `_ ` → 最大化尺寸 `|` → 垂直分屏最大化尺寸 `+` → 增加尺寸 `-` → 减小尺寸 --- ## 其他 帮助文档 → `:help usr_02.txt` gvim 启动设置(显示行号,配色,代码高亮): >编辑安装目录下`_vimrc`文件 > >添加如下代码 > >set nu! > >colorscheme desert > >syntax enable > >syntax on