前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vim从理解到应用

Vim从理解到应用

作者头像
栗筝i
发布2022-12-01 08:35:13
5210
发布2022-12-01 08:35:13
举报
文章被收录于专栏:迁移内容

1991 年,来自荷兰的一名工程师 Bram Moolenaar 为了在他的Amiga计算机上复制Vi的功能,正式发布 了Vim的第一个版本。在当时无论谁也没想到,这款软件未来能在技术圈爆发出那么大的威力,为千千万万的工程师节省了无数时间,大幅提升他们的开发效率。

从Vi衍生出来的Vim有着不同于大多数编辑器的使用方式:通过键盘对多种模式的相互切换,进行各项命令的执行和对文本的编写。这种方式使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。

接下来我们将开始对Vim的学习。

1、Vim模式介绍

Vim具有6种基本模式和5种派生模式,我们将只简单介绍下6种基本模式:

  • 普通模式(Normal mode)(常用) 在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
  • 插入模式(Insert mode)(常用) 在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。 在插入模式中,可以按ESC键回到普通模式。
  • 可视模式(Visual mode) 这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
  • 选择模式(Select mode) 这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
  • 命令行模式(Command line mode)(常用) 在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
  • Ex模式(Ex mode) 这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。

六种基本模式中以普通、插入和命令行三种模式最为常用,因为这三种模式的相互配合即可完成基本的编辑功能(普通模式:对文本进行复制、粘贴、删除、撤销等操作;插入模式:编写文本内容;命令行模式:保存、退出文档,以及设置编辑环境)。

vim启动进入普通模式后,可通过按i键(插入)或a键(附加)进入插入模式,通过:键进入命令行模式。而当Vim处于插入模式或者命令行模式,均可以用过按Esc键或者Ctrl+[回到普通模式。

2、Vim的进出与游标移动

2.1、Vim的打开

使用vim命令进入vim界面,命令格式如下

代码语言:javascript
复制
vim 文件名

默认条件下为当前路径下的相应文件,如果文件不存在将新建文本后打开Vim。

2.2、游标移动与跳转

在普通模式下,使用方向键或者反人类的h、j、k、l键可以移动游标,并通过w、b、e等键进行游标的跳转,具体内容参见下表:

按键

说明

nG(n Shift+g)

游标移动到第n行(行间跳转)

gg

游标移动到第一行(行间跳转)

G(Shift+g)

游标移动到最后一行(行间跳转)

b

到前一个单词的开头

w

到下一个单词的开头

e

到当前单词的结尾

ge

到前一个单词的结尾

0或^

到行头

$

到行尾

f<字母>

向后搜索<字母>并跳转到第一个匹配的位置(很实用)

F<字母>

向前搜索<字母>并跳转到第一个匹配的位置(实用)

t<字母>

向后搜索<字母>并跳转到第一个匹配的位置之前的一个字母(不常用)

T<字母>

向前搜索<字母>并跳转到第一个匹配的位置之后的一个字母(不常用)

注:在命令行模式下,可通过输入:set nu以显示行号

2.3、Vim的退出与保存

2.3.1命令行模式下的退出 在命令行模式下,常用输入wq回车,保存并退出编辑,下表为具体的退出方式:

命令

说明

:q

退出

:wq

保存并退出

:q!

强制退出

:wq!

强制保存并退出

:x

保存并退出

:w<文件路径>

另存为

:saves 文件路径

另存为

2.3.3普通模式下的退出 普通模式下用户可以使用Shift+zz进行保存并退出操作!

3、Vim的增删改查、复制粘贴撤销与快速缩进

不知道为什么,一提到增删改查我就很激动。

3.1、增删改查

3.1.1、增加(插入)操作 Vim很直接的拥有一个插入模式进行插入操作,下表为在普通模式下进入插入模式的具体方式(不包括通过替换方式进入插入模式的方法):

按键

说明

i

在当前光标处进行编辑

I

在行首插入

a

在光标后插入编辑

A

在行末插入

o

在当前行后插入一个新行

O

在当前行前插入一个新行

3.1.2、删除操作 进入普通模式,使用下列命令可以进行文本快速删除:

命令

说明

x

删除游标所在的字符

X

删除游标所在前一个字符

Delete

删除游标所在的字符(同x)

dd

删除整行

dw

删除一个单词(不适用中文)

d$或D

删除至行尾

d^

删除至行首

dG

删除到文档结尾处

d1G

删至文档首部

3.1.3、修改(替换)操作 替换是针对普通模式下的操作,具体操作间下表:

命令

说明

r+<待替换字母>

将游标所在字母替换为指定字母

R

连续替换,直到按下Esc

cc

替换整行,即删除游标所在行(将进入插入模式)

cw

替换一个单词,即删除一个单词(将进入插入模式)

C

替换游标以后至行末

~

反转游标所在字母大小写

3.1.4、查找操作 普通模式下输入 / 然后键入需要查找的字符串 按回车后就会进行查找。 ? 与/ 功能相同,只不过 ? 是向上而 / 是向下查找。 进入查找之后,输入n 和 N 可以继续查找。 n是查找下一个内容,N查找上一个内容。 此外,普通模式下可以使用*(或g*)和#(或#)来向下和向上寻找游标所在处的单词。

3.2、复制、粘贴、撤销与快速缩进

3.2.1、复制粘贴与剪切粘贴 普通模式中使用y复制:

命令

说明

yy

复制游标所在的整行(5yy表示复制5行)

y^

复制至行首,或y0。不含光标所在处字符

y$

复制至行尾。含光标所在处字符

yw

复制一个单词

y2w

复制两个单词

yG

复制至文本末

y1G

复制至文本开头

普通模式下的使用p进行粘贴:

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

此外上文提到的dd删除操作也是剪切,删除后可以使用p进行粘贴的。

3.2.2、撤销(Undo)操作

  • Vim使用u或者u{n}进行撤销一次或者n次的操作;
  • 使用U(大写) 撤销当前行的所有修改;
  • 此外,Vim使用Ctrl+r进行Redo(复原)操作,进行对undo操作的插销。

3.3.3、快速缩进与文本调整 以下是常用的缩进和文本调整方式:

命令

说明

<<

整行向左回退

>>

整行将向右缩进(非常好用)

:set shiftwidth?

命令行模式下,获取缩进设定值

:set shiftwidth?=n

命令行模式下,设定缩进值为n

:ce(center)

使本行内容居中

:ri(right)

使本行文本靠右

:le(left)

使本行内容靠左

4、Vim的高级功能

高级功能剩下的内容有时间再更新吧。。。

5、总结

VIM 如果不是经常使用,很容易忘记它的使用技巧,需要经常复盘,久而久之也就养成了手指记忆。

为了更好的解决这个问题,让各大开发者可以快速掌握 Vim 的常用快捷键,一位开发者做了一款游戏:Vim Adventures。在这个游戏中,你需要配合各种常用的 Vim 快捷键,来移动光标,与 NPC 进行对话,寻找线索,获取钥匙,打开宝箱。当你一次次通关后,便会慢慢发现自己已成功掌握大量 Vim 使用技巧。 PS:这个游戏只有前三关是免费的!!!

如果文章有表述不当的地方可以留言指正,互相学习 。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Vim模式介绍
  • 2、Vim的进出与游标移动
    • 2.1、Vim的打开
      • 2.2、游标移动与跳转
        • 2.3、Vim的退出与保存
        • 3、Vim的增删改查、复制粘贴撤销与快速缩进
          • 3.1、增删改查
            • 3.2、复制、粘贴、撤销与快速缩进
            • 4、Vim的高级功能
            • 5、总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档