-
- [1. vim工具基本模式的转换](#1. vim工具基本模式的转换)
- [2. vim命令模式下的各种编辑命令](#2. vim命令模式下的各种编辑命令)
-
- [2.1. 光标行定位](#2.1. 光标行定位)
- [2.2. 光标自由定位](#2.2. 光标自由定位)
- [2.3. 复制粘贴](#2.3. 复制粘贴)
- [2.4. 删除](#2.4. 删除)
- [2.5. 文本的大小写替换](#2.5. 文本的大小写替换)
- [2.6. 文本的替换](#2.6. 文本的替换)
- [2.7. 文本的前删后删](#2.7. 文本的前删后删)
- [2.8. 撤销操作](#2.8. 撤销操作)
- [3. vim底行模式下的命令](#3. vim底行模式下的命令)
-
- [3.1. 设置行号与取消设置行号](#3.1. 设置行号与取消设置行号)
- [3.2. 分屏操作](#3.2. 分屏操作)
- [3.3. 在不退出vim的情况下执行Linux命令](#3.3. 在不退出vim的情况下执行Linux命令)
- [3.4. 字符串替换](#3.4. 字符串替换)
- [4. vim的配置文件](#4. vim的配置文件)
vim是Linux系统下的一个功能强大,多模式的编辑器。如果要拿Windows中的一个编辑器类比,那就是记事本。
1. vim工具基本模式的转换
简单的介绍一下vim的使用,如图所示:
![](https://file.jishuzhan.net/article/1714904159058137089/4f8faec2360ca916ff887e65764f746d.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/c11760a91b514d5053a702b44e1d1598.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/08eb46cc163f2fb26e0dfb0d37839f8e.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/728d70f14f843e477c3e5b9b031724fe.webp)
三种模式的相互转换图:
![](https://file.jishuzhan.net/article/1714904159058137089/59da4425436723b6664e2452776dad98.webp)
2. vim命令模式下的各种编辑命令
2.1. 光标行定位
1. 行右定位
命令:shift + 4(连按,4是键盘上面的4,不是小键盘的数字4)
功能:把光标所在位置直接定位到所在行的最右边。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/18c25abad3d35fc3a61abcf3a21debd7.webp)
现在我进行定位操作,将光标定位改行的最右端。
![](https://file.jishuzhan.net/article/1714904159058137089/5dab72eb0f809f5693d02a559947d61b.webp)
2. 行左定位
命令:shift + 6(连按,6是键盘上面的6,不是小键盘的数字6)
功能:把光标所在位置直接定位到所在行的最左边。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/f42c8ad490b0c0517ba436ed765fe5c5.webp)
现在我在命令模式下,输入指令shift + 6,即可将光标定位到该行的最左端。
![](https://file.jishuzhan.net/article/1714904159058137089/5efac92c2a62cb3a926aa08516bf4275.webp)
3. 顶部定位
命令:gg(连按)
功能:把光标所在位置直接定位到最顶部。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/908e489176d2b8262eafb495814510b8.webp)
在命令模式下,输入指令gg,即可将光标定位到最顶部。
![](https://file.jishuzhan.net/article/1714904159058137089/176997bfe2daf95aac36feb5e909ba0e.webp)
4. 底部定位
命令:shift + g(连按)
功能:把光标所在位置直接定位到最底部。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/1154442c08992c27f30962daee2a5a0e.webp)
在命令模式下,输入指令shift + g,即可将光标定位到最底部。
![](https://file.jishuzhan.net/article/1714904159058137089/0aecd44ea8ea0308ee9b0c3922bd6304.webp)
5. 任意行定位
在底行模式下输入指令 set nu 即可显示现在文本的行数。
命令:n + shift + g(n代表的是具体的数字)
功能:将光标定位到第n行的位置
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/44c60567182c18fde9e99b83bdc95437.webp)
在命令模式下,输入1 + shift + g,即可将光标定位到第1行。
![](https://file.jishuzhan.net/article/1714904159058137089/b81bccb83c56689fbcb8a85c2268c6c6.webp)
2.2. 光标自由定位
上面讲了光标的行定位,可以把光标定位到任意行的位置。
接下来讲一讲光标上下左右的自由定位。需要用到的是 h j k l 四个字母。
- h代表的是光标向左移动1位。
- j代表的是光标向下移动1位。
- k代表的是光标向上移动1位。
- l代表的是光标向右移动1位。
记忆小技巧:
看到键盘上的4个字母的位置。
- h在最左边,可以认为向左移动。
- j可以认为是jump的单词的缩写首字母,向下跳就是向下移动。
- k对应的不是最右边,向下和向上的功能也有了,自然就是向上移动咯。
- l在最右边,可以认为向右移动。
具体的操作就不做示范了,感兴趣的可以自行尝试一下。
另外的,光标还有其他的定位方式。
1. 按照单词向前定位
指令:w
功能:向后按照单词定位
示范:略
2. 按照单词向后定位
指令:b
功能:向前按照单词定位
示范:略
2.3. 复制粘贴
1. 复制
指令:yy
功能:针对光标所在行进行复制
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/b77177054d5d7718c89746efafceb72d.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/2dcf8279d75d65b38760e3ca30a84f53.webp)
2. 粘贴
指令:p
功能: 将复制的文本进行粘贴
示范:如上图。
其中yy(复制) 和 p(粘贴)支持 nyy 和 np操作(n代表的是具体的数字)。
- 10yy代表的是从光标所在行开始数10行进行文本的复制
- 10p代表的是将文本内容复制10次。
具体的操作就不做演示了,有兴趣的可以自行尝试!
2.4. 删除
命令:dd
功能:针对光标所在行的内容进行删除
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/b751e00a01933ae0745f5143c46e2c02.webp)
输入删除命令,会把光标所在行的内容删除。
![](https://file.jishuzhan.net/article/1714904159058137089/ed61611bec01021ea53df2cc7d4d7fbe.webp)
其中ndd(n代表的是一个具体的数字),指定删除从光标所在行开始删除n行的内容。
搭配上复制命令(p),可以形成剪切的效果。
![](https://file.jishuzhan.net/article/1714904159058137089/bc25dfdc411e49da4e7f1ac6de373db2.webp)
我输入 3dd,然后将光标移动到最底部,看看效果。
![](https://file.jishuzhan.net/article/1714904159058137089/9a1e6650abc3a8478885fcd992bb3074.webp)
另外的,还有按照单词删除的命令。
命令:cw
功能:按照单词进行删除
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/45c3e855f804927dd8b025f0c01b3ebe.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/a4b1489e7839d0d2c3075352426d6ee1.webp)
删除后,会自动进入插入模式。另外cw也支持cnw操作,具体的含义就是删除n个单词。
2.5. 文本的大小写替换
命令:shift + ~
功能:将光标所在行的内容逐个进行大小写的替换,如果是大写,则换成小写,如果是小写,则换成大写。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/87bf3b834d6710e5636b783c2f183974.webp)
输入命令shift + ~后,看看效果。
![](https://file.jishuzhan.net/article/1714904159058137089/628bea033e43b5dd35996407fde3c221.webp)
2.6. 文本的替换
- 批量化替换
指令:shift + r
功能:进入替换模式。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/c66acb7e71731003056e8fa38ac006ba.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/79768d69dd5f6a1367e4eb252f332fd4.webp)
2. 逐个替换
指令:r
功能:将光标选中的一个内容进行替换
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/7dc6cb422f7278b620dd6ad7989105c4.webp)
按1下r,然后输入你想要更换的字符。
![](https://file.jishuzhan.net/article/1714904159058137089/556de1f02c4522ce719e8feba8c043d7.webp)
2.7. 文本的前删后删
- 前删
命令:shift + x
功能:从光标开始,逐个删除光标前的内容(不包括光标)
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/0b3e5ba043e567f5573f2e8759b03765.webp)
输入指令shift + x
![](https://file.jishuzhan.net/article/1714904159058137089/0083d27ce010152be4c884dc3a53d928.webp)
2. 后删
命令:x
功能:从光标开始,逐个删除光标后的内容(包括光标)
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/0b3e5ba043e567f5573f2e8759b03765.webp)
输入指令x
![](https://file.jishuzhan.net/article/1714904159058137089/e62b4b47a5c3fd284b223f37b75658e2.webp)
2.8. 撤销操作
1. 撤销操作
指令:u
功能:将刚才所做的操作撤销,类似Windows系统下的crtl + z
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/52ae52338ed5f1bc7d0c9fc238e85204.webp)
操作完成后,我再按u撤销刚才的dd操作。
![](https://file.jishuzhan.net/article/1714904159058137089/f756d8b380d6262c545e705830f22ec2.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/b2071bcce899051cc8b97cba2c85301a.webp)
2. 取消撤销操作
指令:crtl + r
功能:取消撤销操作,类似Windows系统下的crtl + y
示范:略
3. vim底行模式下的命令
3.1. 设置行号与取消设置行号
1. 设置行号
命令:set nu
功能:对当前文本进行行号的显示。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/ca3ff97c13acd2676d78e8ed3f958437.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/21ce1c3056f7bce9f0cef021f8f8cf17.webp)
2. 取消设置行号
指令: set nonu
功能:取消当前文本的行号显示
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/09a9eddb12cb1ac7ad9c6e4fac12b893.webp)
3.2. 分屏操作
命令: vs + 文件名
功能:把想要分屏的文件与当前文件进行分屏编写。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/6e440ec099405f7f078297d20a6b4c81.webp)
注意!光标在哪个文件显示,就说明你当前选中了哪个文件!
当你选中了光标所在的文件,进行的所有操作都是在该文件下操作的,不会影响另一个文件。
如果你想更换文件的选择,只需要当前文件的命令模式下,输入crtl + ww即可完成光标跳转到另一个文件的操作。
3.3. 在不退出vim的情况下执行Linux命令
进入到了vim工具,如果你想查询相关的手册,按照一贯的思维是要退出vim工具的。
但是如果在vim工具下,进入到底行模式,输入! + 相应的Linux命令,即可在不退出vim工具的情况下执行相关的Linux命令。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/635dc55eb6924d4b4dfd38dbc2d73289.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/bb229d9515f4f3948ebd0333f221d0c2.webp)
按ENTER重新进入vim工具。
![](https://file.jishuzhan.net/article/1714904159058137089/dece59272aad83a2626a3a7969988cba.webp)
3.4. 字符串替换
指令:%s/字符串1/字符串2/g
功能:按照上面的指令,就是讲字符串2换成字符串1。
示范:
![](https://file.jishuzhan.net/article/1714904159058137089/248b4f8d647dd16dab6bdc35b2c486d0.webp)
![](https://file.jishuzhan.net/article/1714904159058137089/cf38a7ffbf1e9cfa654853809f19ee0f.webp)
4. vim的配置文件
从下载开始到使用,vim工具用起来就像个记事本一样,命令很多,而且写代码也不太方便。
这是因为这是vim的最初模样,你可以根据你自己的喜好去配置你的vim,让你的vim用起来更得心应手。
下面来说说vim的配置。
- 首先在用户的家目录下创建一个.vimrc文件用以配置vim.
![](https://file.jishuzhan.net/article/1714904159058137089/be9b8618ba9d609dd44846d1d10414ab.webp)
- 上网搜索各种vim的配置
例如像这样的
![](https://file.jishuzhan.net/article/1714904159058137089/a2207339af1636387e6be7cef44d135f.webp)
都可以加到.vimrc文件中去,用以配置你的vim。