何为 vim?

vim 是从 vi 倒退进去的一个文本编辑器。代码补全、编译及谬误跳转等不便编程的性能特地丰盛,在程序员中被宽泛应用,和 Emacs 并列成为类 Unix 零碎用户最喜爱的文本编辑器。

vim 的设计理念是命令的组合。用户学习了各种各样的文本间挪动/跳转的命令和其余的一般模式的编辑命令,并且可能灵便组合应用的话,可能比那些没有模式的编辑器更加高效的进行文本编辑。

同时 vim 与很多快捷键设置和正则表达式相似,能够辅助记忆。并且 vim 针对程序员做了优化。

vim 的三种操作模式

vim 有三种操作模式,别离是命令模式(Command mode)、输出模式(Insert mode)和底线命令模式(Last line mode)。

三种模式切换快捷键:

模式快捷键
命令模式ESC
输出模式i或a
底线命令模式:

命令模式

在命令模式中管制光标挪动和输出命令,可对文本进行复制、粘贴、删除和查找等工作。

应用命令 vim filename 后进入编辑器视图后,默认模式就是命令模式,此时敲击键盘字母会被辨认为一个命令,例如在键盘上间断敲击两次d,就会删除光标所在行。

以下是在命令模式中罕用的快捷操作:

操作快捷键
光标左移h
光标右移l(小写L)
光标上移k
光标下移j
光标挪动到下一个单词w
光标挪动到上一个单词b
挪动游标到第n行nG
挪动游标到第一行gg
挪动游标到最初一行G
疾速回到上一次光标所在位置Ctrl+o
删除以后字符x
删除前一个字符X
删除整行dd
删除一个单词dw或daw
删除至行尾d$或D
删除至行首d^
删除到文档开端dG
删除至文档首部d1G
删除n行ndd
删除n个间断字符nx
将光标所在位置字母变成大写或小写~
复制游标所在的整行yy(3yy示意复制3行)
粘贴至光标后(下)p
粘贴至光标前(上)P
剪切dd
替换上下行ddp
替换整行,即删除游标所在行并进入插入模式cc
撤销一次或n次操作u{n}
撤销以后行的所有批改U
复原撤销操作Ctrl+r
整行将向右缩进>>
整行将向左退回<<
若档案没有更动,则不贮存来到,若档案曾经被更动过,则贮存后来到ZZ

输出模式

在命令模式下按i或a键就进入了输出模式,在输出模式下,您能够失常的应用键盘按键对文本进行插入和删除等操作。

以下是输出模式罕用的快捷键操作:

操作命令
换行Enter
删除光标前一个字符Space
删除光标后一个字符Delete
在文本中挪动光标方向键
挪动光标到行首/行尾Home/End
切换光标为输出/替换模式Insert
退出输出模式,切换到命令模式Esc

底线命令模式

在命令模式下按:键就进入了底线命令模式,在底线命令模式中能够输出单个或多个字符的命令。

以下是底线命令模式中罕用的快捷操作:

操作命令
保留:w
退出:q
保留并退出:wq(:wq!示意强制保留退出)
将文件另存为其余文件名:w new_filename
显示行号:set nu
勾销行号:set nonu
使本行内容居中:ce
使本行文本靠右:ri
使本行内容靠左:le
向光标之下寻找一个名称为word的字符串:/word
向光标之上寻找一个字符串名称为word的字符串:?word
反复前一个搜查的动作:n
从第一行到最初一行寻找word1字符串,并将该字符串取代为word2:1,$s/word1/word2/g :%s/word1/word2/g

咱们能够参考以下图示来了解这三种模式:

应用示例

在本示例将应用vim在文本文件中写入一首唐诗。

  1. 新建一个文件并进入vim命令模式。
vim 静夜思.txt

间接输出 vim 文件名 就可能进入 vi 的个别模式了。请留神,记得 vi 前面肯定要加文件名,不论该文件存在与否!
  1. 按下i进入输出模式,输出《静夜思》的诗名。

在个别模式之中,只有按下 i, o, a 等字符就能够进入输出模式了!
在编辑模式当中,你能够发现在左下角状态栏中会呈现 –INSERT- 的字样,那就是能够输出任意字符的提醒。
这个时候,键盘上除了 Esc 这个按键之外,其余的按键都能够视作为个别的输出按钮了,所以你能够进行任何的编辑。
  1. 按下 ECS 键回到命令模式,并输出底线命令:ce,使诗名居中。

  1. 按下o键换行并进入输出模式,输出第一行诗。

  1. 按下 ECS 键回到命令模式,并输出底线命令:ce,使第一行诗居中。

  1. 按下o键换行并进入输出模式,输出第二行诗。

  1. 按下 ECS 键回到命令模式,并输出底线命令:ce,使第二行诗居中。

  1. 在命令模式中执行底线命令:wq来到 vim。

学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!

大家好,我是编程三昧的作者隐逸王,我的公众号是编程三昧,心愿大家多多指教!