快来使用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 可以进行缩进和回退的字符数的设置