Vim入门教程
Posted zkccnb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim入门教程相关的知识,希望对你有一定的参考价值。
Vim入门教程
有IDE了为什么还要学习Vim?
Vim在C/C++后台开发中是必不可少的编辑工具,很多场景下我们不能依靠任何IDE的帮助来书写代码,此时Vim成为了在这种场景下的首选代码编辑工具。因此,对有志于后台开发的同学来说,Vim入门是必不可少的一课。
本文假设你是一个Vim的新手(之前从来没有接触过Vim),希望你通读本文后,可以使用Vim做基本的代码编辑。当然,要想真正将Vim用到得心应手,并配合其他相关工具,这需要长此以往的熟悉。在没有使用Linux下的Vim工具时,也可以使用Qt
中的FakeVim
、LeetCode
中的Vim键位
等来熟悉Vim的操作。
1. 三种模式的切换
图1 Vim的三种模式转化图
2. 普通模式
安装Vim后,在Linux命令行中键入如下命令使用Vim打开一个文件:
vim filename # 打开一个文件
vim filename1,filename2,filename3...# 同时打开多个文件到文件缓冲区
刚进入Vim的模式默认为普通模式,此模式下不能编辑,只能查看文件。所以有些没用过Vim的同学一打开Vim之后就开始疯狂操作。。。结果什么也没有发生(比如我)。在这种模式下,有一些快捷键帮助我们便捷的查看文件,如下:
普通模式下的快捷键 | 行为 |
---|---|
k / ↑ | 向上 |
j / ↓ | 向下 |
h / ← | 向左 |
l / → | 向右 |
10k / 10↑ | 向上10字符 |
10j / 10↓ | 向下10字符 |
10h / 10← | 向左10字符 |
10l / 10→ | 向右10字符 |
/word | 向下查找word |
?word | 向上查找word |
n | 如果是/word后使用,则表示向下继续查找; 如果是?word后使用,则表示向上继续查找; |
N | 如果是/word后使用,则表示向上继续查找; 如果是?word后使用,则表示向下继续查找; |
u | 撤销 |
ctrl+r | 重做 |
ctrl+w + →/← | 多窗口中切换光标到右/左边的窗口 |
bn | 在当前窗口切换为下一个文件 |
bp | 在当前窗口切换为上一个文件 |
b num | 在当前窗口切换为标号为num的文件 (在命令模式下查看已打开文件编号) |
a / o / i / s | 进入编辑模式 |
: | 进入命令模式 |
3. 编辑模式
从普通模式键入a / o / i / s
后会进入编辑模式,此模式下可以对文件进行编辑。
文本普通的编辑和其他IDE差不多,稍加熟悉就可以编辑了,只是注意不能用鼠标了。。实际上,Vim工具的一个重要作用就是去除对鼠标的依赖,特别是用熟练了之后,不用鼠标反而可以提升编程的效率。
- 另外,程序员必备的“复制粘贴”操作和你所处的shell一样。。
一般的bush-shell
来说,复制:shift+ctrl+c
;粘贴:右键。(这不还是用鼠标了。。,因为感觉Vim自带的复制粘贴有些不灵活)
从编辑模式退回普通模式按Esc
即可,编辑模式不能直接到命令行模式,需要先经普通模式。
4. 命令模式(低行模式)
这个模式下可以在Vim中输入一些指令来设置文件和编辑器的属性,常见的命令如下:
命令模式下的快捷键 | 行为 |
---|---|
:w | 保存 |
:q | 不保存退出 |
:wq | 保存并退出 |
:q! | 强制退出 |
:w filename | 另存为filename文件 |
:set nu | 设置显示行号(这个还是很重要的,特别是配合gdb调试的时候) |
:e filename | 打开filename文件到缓冲区 |
:sp filename | 打开一个文件到缓冲区并水平分割窗口以显示之(这个感觉很鸡肋) |
:vsp filename | 打开一个文件到缓冲区并垂直分割窗口以显示之(这个很有用) |
:bn | 在当前窗口切换为缓冲区中的下一个文件 |
:bp | 在当前窗口切换为缓冲区中的上一个文件 |
:b num | 在当前窗口切换为标号为num的文件 (在命令模式下查看已打开文件编号) |
:ls | 显示当前所有打开文件的编号 |
:行号 | 光标跳到指定的行号处 |
:/word | 查找word字符串,用n以跳到下一处 |
Esc | 退回普通模式 |
5. Vim操作图谱
这里有一张Vim操作图谱可供查看:
图2:Vim操作图谱
以上是关于Vim入门教程的主要内容,如果未能解决你的问题,请参考以下文章