导语

终端使用者的诸位一定对vim不陌生,作为一个命令行下的文本编辑软件,vim可谓功能强大。然而对很多年轻人(比如之前的时候的我),vim功能强大就强大在他能在终端编辑文本,vim和vi有嘛区别?我不到啊?今天来说一说vim的常用的提高文本编辑效率的快捷键。

安装

使用linux系统自带的软件管理工具即可,比如apt yum之类的。

使用vim建立文件

vim主要分为普通模式和插入模式,普通模式是命令模式,插入模式是编辑模式。
顾名思义,编辑模式是修改文本的内容的,命令模式是进行命令操作的。之前我是憨憨的时候是因为我只知道能进入编辑模式,各种方便的快捷键一概不知,这里我们来安排一哈。

建立文件

$vim hello.c

进入插入模式

打开文件后我们默认在普通模式,按i进入插入模式,最下面会显示– INSERT –

退出并保存

在普通模式下输入:wq保存并退出vim编辑器

使用vim编辑文本

移动光标hjkl

vim在普通模式下移动光标的按键是hjkl,h左 j下 k上 l右
这个移动方式的好处是我们不用把右手进行位移放到方向键上了,看似没啥用,却实际上对体验有所优化。

删除字符 x dd u Ctrl+R

在普通模式下,用x即可在光标向后删除一个字符,用X则是向前删除一个字符。
在普通模式下,用ndd可以将光标所在后n行删除,dd就是删除当前行。dG为删除光标到最后一行的所有数据
恢复删除命令是u,当你删除了本来不想删除的东西,可以摁u取消之前的删除
Ctrl+R是一个撤销,取消在普通模式所做的上一个命令。

复制粘贴 p y

粘贴命令是p,将内存中的字符复制到当前光标的后面。比如你刚才dd了一行,内存里就有了那一行,你再用p命令就可以将那一行粘贴到光标的位置。
y命令(yank)是将指定的字符串复制到内存中,yw命令(yank words)用于复制单词,可以指定复制单词的数量,比如y2w就是赋值两个单词。

查找字符串

就相当于常用的ctrl+f。
可以用/ 也可以用?,/是搜索下一个,?是搜索上一个
n是重复上一个搜索命令,N是反向进行上一个搜索命令。

跳转到某一行g

输入”nG”或者”:n”可以让光标转到第n行
比如跳到第5行,就可以用 “5G” 或者 “:5”

vim的格式设置

设置缩进

对C语言程序设置锁定,可以用cindent选项;如果需要设置下一行的缩进长度可以设置shiftwidth选项。
比如下面的命令实现4个空格的缩进
:set cindent shiftwidth=4
这样,当输入一个语句的时候就会自动缩进,在收到’;’'}’的时候会自动取消缩进。这样也可以根据缩进是否正确来判定自己的代码写的是否有问题。

设置tab键的空格数量

vimtab的默认移动距离是8个空格,当需要修改的时候需要设置tabstop:
:set tabstop=n

设置行号

:set number
使用这条命令后,程序每行代码的头部都会有一个行号的数值。

Vim配置文件 .vimrc

vim启动时会更具~/.vimrc文件配置vi的设置,可以修改.vimrc的数值来定制vim,比如上面提到的shiftwidth、tabstop和number都可以

set shiftwidth=2
set tabstop=2
set number

上面都是抄书的,下面是我个人觉得给劲的。

操作 结果
Ctrl+f 屏幕上移一页
Ctrl+b 屏幕下移一页
Ctrl+d 屏幕上移半页
Ctrl+u 屏幕下移半页
0 移动到一行的最前面
$ 移动到一行的最后面
:1,$s/word1/word2/g(c)或:%s/word1/word2/g(c) 从第一行往后将word1替换成word2,如果是gc的话则会提示你是否confirm。
(n)yy 赋值光标往下的n行(yy就是赋值当前一行)
:w [filename] 另存为filename
:r [filename] 读入filename的数据,相当于write a+
:n1,n2 w [filename] 将n1行到n2行的内容存为filename