快来使用VIM提升你的逼格!
VIM概述
先来说一下VI吧,VI是VIM的前身,VI的全名叫做Visual Interface(可视化接口),而VIM叫做VI Improved,也就是VI的升级版。
那么有哪些令人称赞的升级呢?
- 多级撤销 (VI仅能撤销一布)
- 跨平台
- 语法高亮
- 支持图形界面(NOT recommanded)
VIM编辑器的操作
VIM有三种最常用的模式:
- Command Mode 命令模式
- Insert Mode 输入模式
- Last Line Mode 底行模式
插一句重要的话,VIM的学习和Linux一样,是实践科学!所以一定要在实际环境中多使用,仅通过看文档是不会有实际作用的!
这篇文档是列举了一些常用的VIM技巧和指令以及一些释义,相当于是一篇实验指南吧,希望能给大家起到一点参考的作用
好了,让我们现在开始吧!
VIM的指令结构
VIM有很多指令是支持数字+指令的,
譬如:dd是用来删除整行的命令,那么我们可以使用2dd来删除两行
凡是支持这样结构的命令,我会有标注。
进入输入模式的参考
| 命令 | 说明 | 
|---|---|
| i | 在当前光标处进行编辑(insert) | 
| I | 在行首插入 | 
| A | 在行末插入 | 
| a | 在光标后插入编辑(append) | 
| o | 在当前行后插入一个新行(open) | 
| O | 在当前行前插入一个新行 | 
打开文件
| 1 | :e file | 
进入vim后通过指令也可以打开
| 1 | vim file | 
如果当前目录下没有文件名为file的文件,VIM会为我们创建它。
| 1 | vim +n file | 
打开file,默认光标在第n行
如果n大于文件的最大行,则跳到最后一行。
| 1 | vim +/reg file | 
打开file,高亮所有匹配到的关键字,光标出现在首次出现的哪一行
| 1 | vim file1 file2 file3 | 
VIM同样支持多文件打开
如何在多文件之间跳转呢? ( Buffer )
- 使用 :n下一个文件:N上一个文件
- 使用 :prev上一个:next下一个
如果想要获得我打开了哪些文件,可以在底盘输入:
- :ls (没错,就是ls)
保存与退出文件
| 1 | :w <可选 文件路径> | 
将文件从内存写入硬盘
| 1 | :saveas <必须 文件路径> | 
另存为
| 1 | :q | 
关闭文件(仅适用于未修改的文件)
| 1 | :q! | 
关闭文件(强制) 所做的更改无效,数据会丢失
| 1 | :wq | 
保存并关闭(应该是使用最多的命令了)
这些命令都可以组合使用。
光标移动与定位
光标的四向移动:(支持数字)
- h 左移
- j 下移
- k 上移
- l 右移
至于为什么用这个而不用方向键…..
有人说使用这四个键更快速,然而事实是,VI编辑器是在ADM-3A终端机上创建的,
这玩意就长这样:

这是它的键盘:

所以说这玩意儿是没有我们现在的方向键的
细节图:

更快速的移动:(支持数字)
- w 下一个单词的开头
- e 下一个单词的结尾
- b 上一个单词的开头
- ge 上一个单词的结尾
行内移动还有:
- 0 或 ^ 行头
- $ 行尾
- f<字母> 向后搜索<字母>并跳转到第一个匹配的位置
- F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
翻页指令如下:
- ctrl + f 向前(front)翻页
- ctrl + u 向上(up)翻半页
- ctrl + b 向后(back)翻页
- ctrl + d 向下(down)翻半页
可以直接使用:line来定位
gg快速移到第一行G 快速移到最后一行<num>G 移到<num>行
如果没有行号,使用:set nu来开启
查找
如打开文件一样,在底盘输入/reg来向后搜索
光标出现在首次出现的reg的位置(这次就不是行头了)
向前搜索使用:?reg,光标会出现在上方第一个匹配的reg的位置
接着使用n和N来向后向前搜索
文件操作之删除
删除的指令如下:
- x 删除游标所在的字符(支持数字)
- X 删除游标所在前一个字符(支持数字)
- dd 删除整行(支持数字)
- dw 删除一个单词(支持数字)
- d$或D 删除至行尾
- d^ 删除至行首
- dG 删除到文档结尾处
- d1G 删至文档首部
文件操作之复制剪切粘贴
复制
使用y来复制
- yy 复制游标所在的整行<支持数字>
- y^或y0 复制至行首 不含光标所在处字符。
- y$ 复制至行尾。含光所在处字符。
- yw 复制一个单词。<支持数字,在w前>
- yG 复制至文本末。
- y1G 复制至文本开头。
粘贴
使用p来粘贴
- p 粘贴至光标后(下)
- P 粘贴至光标前(上)
剪切
好吧..我承认,我骗了你们 (微笑
事实上,dd命令就是剪切,由此我们可以得到一个酷炫的技能–交换上下行(ddp)
文件操作之替换
个人觉得替换是很便利的命令(尤其是R,很炫酷)
- r+<字母> 将游标所在字母替换为指定字母 
- R 连续替换,直到按下Esc 
- cc 替换整行,即删除游标所在行,并进入插入模式 
- cw 替换一个单词,即删除一个单词,并进入插入模式 
- C(大写) 替换游标以后至行末 
- ~ 反转游标所在字母大小写 
- u<num>撤销一次或num次操作
- U(大写) 撤销当前行的所有修改 
- Ctrl+r redo,即撤销undo的操作 
文件操作之缩进
VIM的缩进非常方便,使用:
- >>整行向右缩进
- <<整行向左缩进
- :set shiftwidth 可以进行缩进和回退的字符数的设置