Vim 的基本使用方法

Vim快捷键练习神器—-VimTutor

VimTutor是新手可以快速入门Vim的一个Vim内置应用,直接在Vim命令行下,敲Vimtutor,回车即可进入练习。

Vim的三种模式

Vim可以分为三种模式,分别为:

  • 命令行模式(Command mode)

  • 插入模式(Insert mode)

  • 底行模式(Lastline mode)

    命令行模式

    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

    插入模式

    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

    底行模式

    将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号……等。

Vim的基本操作

  1. 进入Vim

    在系统光标提示符后,输入vim及文件名后,回车,进入Vim编辑画面。

    特别注意,进入vim之后,是处于「命令行模式(command mode)」,要切换到「插入模式 (Insert mode)」才能够输入文字。

  2. 切换至插入模式(Insert mode)编辑文件
    在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

  3. 插入模式(Insert mode)切换到命令行模式(Command mode)
    在插入模式下,按一下「ESC」键即可。

  4. 退出vim及保存文件

    在命令行模式(Command mode)下,按冒号「:」键,进入底行模式(Last Line mode)

    常见底行模式下的命令行:

    :w filename 文件以filename为文件名保存

    :wq 文件存盘并退出vim

    :q 文件不存盘并退出vim

    :q! 文件不存盘强制退出vim

命令行模式下的功能键(部分)

在每行行首添加相同的内容:

1
:%s/^/要添加的内容

在每行行尾添加相同的内容:

1
:%s/$/要添加的内容

删除单词:

dw:把光标停留在需要删除的单词前面,依次按下「d」「w」,即可

de:把光标停留在需要删除的单词前面(无视单词前面的空格),依次按下「d」「e」,即可

从当前光标处删除到行末

把光标停留在需要删除的句子前面,依次按下「d」「$」,即可

快速跳转到行首

按下数字「0」,即可

使用计数以删除单词

示例:this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.

依次将鼠标定位到ABC前,按「d」「2」「w」,可以删除:ABC DE

将鼠标定位到FGHI前,按「d」「4」「w」,可以删除:FGHI JK LMN OP

将鼠标定位到Q前,按「d」「3」「w」,可以删除:Q RS TUV

得到句子:

this line of words is cleaned up.

删除当前行

鉴于删除当前行这一操作的高频性,vim设计者简化了快捷键,按「d」「d」即可。

连续删除两行,从当前行开始,则为:「2」「d」「d」

撤销更改

a. 按小写字母「u」,撤销上一步的更改操作;

b. 按大写字母「U」,撤销整行的更改操作;

c. 「Ctrl+R」撤销上一步「撤销操作」。

将刚删除的内容置入其他行

之前刚刚删除的内容,会放入Vim编辑器的寄存器中。基于如此原理,可以将之认为成Windows操作系统的「剪切」操作。

先在想删除的行,按「d」「d」,进行删除操作;

再在想插入那行的前一行按「p」键即可。

替换

将光标放到需要改的字符前,先按「r」键,再输入想更改的字符即可。

跳转

顶部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入「g」「g」即可;

底部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入大写字母「g」即可;

特定行跳转命令:直接输入行号,然后输入大写字母「g」即可。

查找命令

字符串查找:

输入英文斜杠「/」,后面紧接需要搜索的字符串即可。

查找下一个相同字符串,就紧接着按小写字母「n」;

查找上一个相同字符串,就紧接着按大写字母「N」。

配对括号查找:

在编程语言里,配对括号「 ( 」「 ) 」「 { 」「 } 」很常见,当定位到一个配对括号的一半时(注意光标要定位在该括号之前),按「%」,即可自动跳转到与之匹配的第一个配对括号处。

替换字符串

当前行替换命令

在标准命令行模式下,光标定位到当前行,按英文冒号「 :」,再输入s/oldstring/newstring/g 回车,即可。

完整语句为:

:s/dogg/dog/g

特定几行替换命令

在标准命令行模式下,按英文冒号「 :」,再输入#,#s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。

完整语句为:

***:*5,8s/dogg/dog/g

全文替换命令

在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。

完整语句为:

*:*%s/dogg/dog/g

全文替换命令(每个匹配项替换前需确认)

在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/gc 回车,即可(其中#代表特定的首尾两行的行号)。

完整语句为:

*:*%s/dogg/dog/gc