Introduction to Vim

Introduction to how to efficiently use Vim in Linux and Unix environment

Posted by Yingshan Li on May 8, 2020

Brief introduction

Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems. Vim is often called a “programmer’s editor,” and so useful for programming that many consider it an entire IDE.

Moving cursor

相当于IDE中鼠标的功能,在Vim中是不能用鼠标直接移动光标的,但是键盘中的上下左右箭头一样可以在Vim中使用。

gg	移动到第一行的开头
Ngg	移动到第N行的开头
:N	移动到第N行的开头
G	移动到最后一行的开头
Ctrl+f	向下翻一页
Ctrl+b	向上翻一页
H	移动到本页的最上面
M	移动到本页的中间
L	移动到本页的最下面
0	移动到本行的开头
$	移动到本行的末尾
w	移动到下一个字的开头
b	移动到前一个字的开头

Insert

i	在光标左侧插入
I	在光标所在行的开头插入
A	在光标所在行的末尾插入
o	在光标所在行的下一行开始新的一行
O	在光标所在行的上一行开始新的一行

Delete

x	删除光标所在的字符
nx	删除光标所在的前n个字符
dw	删除光标右侧的单词
ndw	删除光标右侧的n个单词
db	删除光标左侧的单词
ndb	删除光标左侧的n个单词
dd	删除当前行
ndd	删除n行内容
d$	从光标开始,删除到行尾
d0	从光标开始,删除到行头
j	删除本行的回车符,与下一行合并

这个应该很好记,n代表数量,x代表以单个字符为单位的删除,d代表以字符串或者行为单位的删除,0代表行首,$代表行尾

Replace

替换的命令我个人一般用得不多,如果需要修改文件的话,我一般就用i进入插入模式去修改了

rc	用c来替换光标所指的字母
nrc	用c来替换光标所指的前n个字母
:s/str1/str2	用s//的正则表达式对某一行第一次匹配到的进行替换
:s/str1/str2/g	g表示对某一行所有匹配到的都进行替换
:1,$ s/str1/str2/g	1表示头,$表示尾,整句表示对全文中所有匹配到的都进行替换

当然除了能够快速移动光标外,你还经常需要查找特定字符串。

/	输入想要查找的字符串,正向搜索
?	输入想要查找的字符串,反向搜索
n	搜索下一个
N	搜索上一个

注意也可以用正则表达式搜索

^	放在字符串前面,匹配行首
$	放在字符串后面,匹配行尾
.	匹配任何字符
\	转义字符
*	出现0次或多次
[a-z]	匹配a到z之间的任意字符
[string]	匹配字符串中间的任何字符
\<	匹配一个单词的开头
\>	匹配一个单词的结尾

好了这写就是一个编辑器所应该具备的最基本的功能,即“添删改查”。下面再介绍一下其它我们在编辑器中经常使用的功能

Copy and paste

yy	复制当前行
nyy	复制n行
p	粘贴到光标后面
P	粘贴到光标前面

Redo

u	撤销命令

Repeat

.	重复上一条命令

完整的Vim功能非常非常的丰富,但我在这里只介绍这些最最基本和常用的一些功能,如果感兴趣的话可以继续通过其它方式学习。