Vim脱离鼠标

vim有三种模式,基本模式就是用来输入命令的,比如删除跳转等操作就是在基本模式下面;插入模式不用说;命令模式就是按Esc+:进入的模式,之间的切换很容易我就废话了。下面几乎都在基本模式操作。

基本操作

移动

h,l,j,k 左右下上
w,b 移动到下/上一个单词

快速退出

普通模式下输入Shift+zz即可保存退出vim

进入插入模式

i 在当前光标处进行编辑
IA 在行首/末插入

a 在光标后插入编辑

oO 在当前行后/前插入一个新行
cw 删除一个单词,同时进入插入模式

文档编辑

文档编辑的所有命令全部符合一个规律,[操作]+[行号]+定位,三个部分完成一个动作

比如:删除操作代码为d,重复操作代码代表操作当前行,则删除2行就是d2d

操作和行号也可以互换位置 2dd,可以省略行号dd代表删除一行,多数时候可以不要操作则代表定位 5G代表移动到第五行。

删除

x 反退格键(delete键) X 退格键

dw 删除一个单词(不适用中文)类似于上一节说的cw,只是删除后还在普通模式

d$ 删除至行尾,d^ 删除至行首

dG 删除到文档结尾处 d1G 删至文档首部

小结:
前缀(操作) :d代表删除
中缀:行号
后缀(定位):d代表行,G代表尽头, $代表行尾,^代表行首,w代表单词

重复命令

普通模式下输入dd,删除一行,输入.(小数点)会再次删除一行,除此之外也可以重复其他任意操作

使用dw删除一个单词,然后用.命令重复删除单词操作

游标

游标跳转位置,不过是没有去掉操作后输入的命令。
nG(n Shift+g) 游标移动到第 n 行(如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号)
gg 游标移动到到第一行
G(Shift+g) 到最后一行

G代表尽头, $代表行尾,^代表行首,w代表下一个单词,b上一个单词,e当前单词末尾

f+字母 向后搜索 字母并跳转到第一个匹配的位置
F+字母 向前搜索字母并跳转到第一个匹配的位置

复制与粘贴

复制为y,后可以接定位符,
yy复制游标所在的整行(3yy表示复制3行)
y^复制至行首,或y0。不含光标所在处字符。y$ 复制至行尾。含光标所在处字符。

UC3thYuZNXlx4vT.gif

yw 复制一个单词。
y2w 复制两个单词。
yG 复制至文本末。
y1G 复制至文本开头

nlHL93PTpV2Ge7c.gif

使用 p 粘贴
p(小写)代表粘贴至光标后(下)
P(大写)代表粘贴至光标前(上)

剪切

我们上面在删除那学到的d操作,其实就是剪切,我们使用ddp就可以交换上下行。

12OS3CovRXLDciQ.gif

小结

到这里是不是文档操作可以直接脱离鼠标了!
移动:h,l,j,k,w,b
跳转:G nG f/F+字母
定位:G代表尽头, $代表行尾,^代表行首,w代表下一个单词,b上一个单词,e当前单词末尾
操作:y d p

进阶操作 - 替换、撤销、缩进、查找

替换和撤销(Undo)

替换和Undo命令都是针对普通模式下的操作,这次用到三个字母,r/R,c/C,u/U

r+<待替换字母> 将游标所在的一个字母替换为其他字母(如下#替换成i)

当然了,一个一个替换甚是麻烦,不妨使用R连续替换

R 连续替换,直到按下Esc

cw 删除一个单词,并进入插入模式

7NyZmzUu6IhFcAp.gif

C 删除从游标处开始到当前行尾,并进入插入模式

u 撤销一次操作(如下,粘贴了Internet单词三次,按u三次,撤销粘贴操作)

U(大写) 无论当前行修改了多少次,撤销当前行的所有修改

Ctrl+r redo,即撤销undo的操作(如下,删除一个单词,写入123,之后交替u和Ctrl+r,可以观察到重复撤销123输入,再恢复123输入)

快速缩进在编辑代码时极其有用,快速调整代码缩进非常的爽,缩进操作均在普通模式下有效

使用命令进行快速调整缩进操作

>> 整行将向右缩进

<< 整行向左回退

设置缩进字符数

命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 (可以简写成sw,下面我都用简写)

获取目前的设定值

1
:set shiftwidth?

设置缩进为n个字符

1
:set shiftwidth=n

h7VaCBOTjYkZcif.gif

输入 ESC 回到普通模式,再次尝试 >> 看缩进量是否变化

utXGNIy8EKTDcjw.gif

调整文本位置

命令行模式下输入:le(left)命令使本行内容靠左

1
:le

命令行模式下输入:ce(center)命令使本行内容居中

1
:ce

命令行模式下输入:ri(right)命令使本行文本靠右

1
:ri

7tCSxlNwQPzk5Yr.gif

快速查找

普通模式下输入 / 然后键入需要查找的字符串 按回车后就会进行查找。输入nN 可以继续查找。 n是查找下一个内容,N查找上一个内容。

1WErUvN7jQGBVhH.gif

?/ 功能相同,只不过?是向上而 / 是向下查找。 :noh退出查找模式

8MwDn53QUFLNWJf.gif

高级查找

普通模式下输入\*寻找游标所在处的单词
普通模式下输入\#同上,但 \#是向前(上)找,\*则是向后(下)找

J9PpXDZfBbd4gWO.gif

以上查找n,N 的继续查找命令依然可以用

小结

速记如下:

替换:r+<待替换字母>,R

删除并插入:cwC

撤销:uUctrl+r

调整文本位置::le:ce:ri

查找:\文本?文本nN

高级操作

  • 同时修改多个文件、快速在文件之间切换

  • 编辑多个文档时分屏操作

  • 批量注释多行代码、修改配置、区域复制删除

多文件的编辑

同时编辑两个文件1.txt,2.txt

1
vim 1.txt 2.txt

查看同时打开了哪些文件 :ls,其中%a表示正在编辑的文件。

nTudgJYMmS9LyvC.gif

在文件之间切换 :n , :N

Qh6WtqsBfNJ1nyF.gif

直接切换到想要编辑的文件 :b 1.txt

OmVtgNLZbAyiTh7.gif

当然了我们为什么跳来跳去,因为这可以完成多个文件之间复制粘贴等组合操作。

分屏

创建分屏

:sp 2.txt 打开新的水平分屏(上下)视窗来编辑2.txt

:vsp 2.txt打开新的垂直分屏(左右)视窗来编辑2.txt

HukPtK46N15faSW.gif

分屏跳转与移动分屏

我先打开了三个文件,1.txt 2.txt 3.txt

nmwBRMUeVlszdFD.png

现在我分别跳转到各个文件中,删除文件内容。

普通模式下Ctrl+w j移至下面视窗

普通模式下Ctrl+w k 移至上面视窗

普通模式下Ctrl+w h 移至左边视窗

普通模式下Ctrl+w l 移至右边视窗

zfnJ9dM6eUxubE1.gif

现在我垂直打开了三个文件,使用以下命令移动视窗,先把文件3从最左边移动到最右边,再移动下最下边

普通模式下Ctrl+w J将当前视窗移至下面

普通模式下Ctrl+w K 将当前视窗移至上面

普通模式下Ctrl+w H 将当前视窗移至左边

普通模式下Ctrl+w L 将当前视窗移至右边

1vR7TrWJusl9GF4.gif

只要位于相应视窗,:q :wq q!退出就可以;wqaqa!全部退出

可视模式

可视模式分为三种,也是vim的精髓。分别是行,矩形区域选择,字符段落选择。

和鼠标选择类似,进入可视模式加定位符号就可以快速跳转到想选择的范围,选中以后再进行复制,删除等操作。

行选择

行选择 Shift+v(小写) , 整行选取,可以上下移动光标选更多的行,再按一次 Shift+v 就可以取消选取。

如下,进入行选择模式,输入4G,跳转到第四行,d删除所选区域。

JCze4gixO1mIBTs.gif

矩形区域选择

矩形区域选择Ctrl+v(小写),按区域选取,可以上下左右移动光标选更多的区域,再按一次 Ctrl+v就可以取消选取。

如下:选择所有的行和第一列所在在区域,shift+i进入插入模式,插入#,双击两次esc,批量注释。然后重复选择动作,输入x删除所选区域。

CAwQzyofjVR4J8I.gif

字符选择(段落选择)

字符选择 v(小写),可以移动光标,光标走过的地方就会选取。再次按下v后就会取消选取。

如下:v$选中192.168.1.2退一格为了不选中换行符,到第一行粘贴ip再选中不需要的ip删除掉。

QNphLTf9uyErmzc.gif

可视化模式和定位符结合使用效果最佳!

小结

同时编辑多个文件: vim 1.txt 2.txt, 切换文件 :n:N:b 1.txt

分屏 :sp 2.txt :vsp 2.txt,跳转Ctrl+w h|j|k|l 移动分屏位

Ctrl+w H|J|K|L

可视模式 Shift+vCtrl+vv

vim命令比较多,这里只列举最有用的,足以应对全部的场景了,记的越多速度越快!

Vim高手,从来不用鼠标

Vim高手,从来不用鼠标2——替换、撤销、缩进、查找

Vim 高级操作一看就会

坚持原创技术分享,您的支持将鼓励我继续创作!
  • 本文作者: Leo
  • 本文链接: https://xuebin.me/posts/31d58333.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!