文章

Vim入门指南

什么是Vim

Vim是从vi发展出来的一个文本编辑器。其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开源方式下发行的自由软件

Vim有什么用

1. 对硬件没有要求

  • 基本上所有的Linux \ Unix上都会预装,适合各种恶劣的环境

  • 低配电脑跑起来也很流畅

  • 不需要依赖GUI,继承了 Unix 哲学, 一切都是文本

  • SSH连接或者在Terminal下的时候可以方便进行简单的代码和配置修改

  • 不用鼠标,只需要一把48键键盘,甚至方向键也不需要

2. 高度扩展、定制性

  • 任务自动化/脚本化

  • 丰富的插件,完全可以打造成一个属于自己的VS Code

日常的Vim

诚然,用Vim开发的话,作为一个文本编辑器在复杂环境下是比不上IDEA,VS这种IDE方便的。

但是现在的Vim已经不仅仅是一个编辑器了,在VS Code和IDEA中都有Vim的插件在其中,使用了Vim插件之后,变可以享受到Vim方式的高效以及IDE的便捷了。

不需要手指离开键盘指法的位置就可以移动光标,复制粘贴,查找

而且还可以快速定位目标位置,快速修改整行等等操作

把鼠标扔到一边吧!

vi/vim 的使用

Vim有四种模式:正常模式(Normal)编辑模式(Insert、Replace)可视模式(Visual)底线命令模式(Last line mode)

移动、插入和删除等基本使用

移动

         ^
         k               提示: h 的键位于左边,每次按下就会向左移动。
   < h       l >               l 的键位于右边,每次按下就会向右移动。
         j                     j 键看起来很象一支尖端方向朝下的箭头。
         v

插入

  • i (insert) 当前字符前插入

  • a (append) 当前字符后插入

  • A (Append) 行尾添加字符

aiA 都会带您进入插入模式,惟一的区别在于字符插入的位置。

  • o 在光标 下方 打开新的一行
  • O 在光标 上方 打开新的一行

删除

x 删除光标所在位置的字符

撤消类命令

输入 u (undo) 来撤消最后执行的命令

输入大写的 U (Undo) ,恢复到该行的原始状态

输入CTRL-R 可以重做被撤消的命令

光标定位及搜索

定位及文件状态

  • e 移动光标到下一步不完整的单词
  • w 移动光标到下一个单词
  • b 移动光标到上一个单词
  • $ 移动光标到行尾
  • ^ 移动光标到行首
行与段落的移动

:set nu 打开行号

{ , } 移动光标到上下一个空行

输入 CTRL-G 显示当前编辑文件中当前光标所在行位置以及文件状态信息。

输入大写 G 可以使得当前光标直接跳转到文件最后一行。
输入gg 可以使得当前光标直接跳转到文件第一行。

输入行号,然后输入大写 G,跳转到对应行

搜索类命令

正常模式下输入 /关键词

要查找同上一次的字符串,只需要按 n (next) 键。要向相反方向查找同上一次的字符串,请输入大写 N 即可。

如果您想逆向查找字符串,请使用 ? 代替 / 进行。

要回到您之前的位置按 CTRL-O 重复按可以回退更多步。CTRL-I 会跳转到较新的位置。

配对括号的查找

输入 % 可以移动到配对的另一个括号

组合

使用计数指定动作

在动作前输入数字会使它重复那么多次。

  • 2w 使光标向前移动两个单词

  • 3e 使光标向前移动到第三个单词的末尾

  • 0 (数字零) 移动光标到行首

删除更多

许多改变文本的命令都由一个操作符和一个动作构成。
使用删除操作符 d 的删除命令的格式如下:

    d   motion
     其中:
    d      - 删除操作符。
    motion - 操作符的操作对象(在下面列出)。

因此:

  • de 会从当前光标位置删除到单词末尾。
  • dw 删除该单词
  • d$ 从当前光标删除到行末
使用计数以删除更多

输入 d2w 以删除两个单词

删除整一个当前行

输入 dd 可以删除整一个当前行。

当然你也可以带上数字,输入 2dd 删除两行。

粘贴和替换

复制粘贴文本

使用操作符 y 复制文本,使用 p 粘贴文本

配合前面说过的组合可以有:

  • yy 复制整行

  • y2j 复制2行

  • y$ 复制到行尾

剪切 - 删除后粘贴

输入 dd 将会删除当前行,删除行会暂存到 Vim 中

输入 p 将该行粘贴到光标下一行

更改类操作

输入 r 和要替换成的字符当前字符

使用c更改更多
 c    [number]   motion

动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。

  • cw/ce 更改文本直到一个单词的末尾
  • cc 更改整行
  • c2w 更改2个单词
替换模式

输入大写的R 进入 替换模式

替换命令
  • s/thee/the 请注意该命令只改变光标所在行的第一个匹配串。

  • :s/thee/the/g 则是替换全行的匹配串,该行中所有的 "thee" 都会被改变。

  • :#,#s/old/new/g 其中 #,# 代表的是替换操作的若干行中首尾两行的行号。

  • :%s/old/new/g 则是替换整个文件中的每个匹配串。

  • :%s/old/new/gc 会找到整个文件中的每个匹配串,并且对每个匹配串 提示是否进行替换。

IO以及命令

在 VIM 内执行外部命令的方法

输入 :! , 这样就允许您执行外部的 shell 命令了。

关于保存文件的更多信息

请输入 :w FILENAME 以 FILENAME 为文件名保存整个文件

一个具有选择性的保存命令

 v motion :w FILENAME

使用v选择代码,然后按 : 字符。您将看到屏幕底部会出现 :'<,'> 。

现在请输入 w TEST,其中 TEST 是一个未被使用的文件名。确认您看到了:'<,'>w TEST 之后按 <回车> 键。

提取和合并文件

:r TEST 将前面创建的名为 TEST 的文件提取进来。

您还可以读取外部命令的输出。例如, :r !ls 可以读取 ls 命令的输出,并把它放置在光标下面。

命令补全

命令时,按 CTRL-D 可以查看可能的补全结果。
<TAB> 可以使用一个补全。

设置类命令的选项

输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:

'ic' 'ignorecase'       查找时忽略字母大小写
'is' 'incsearch'        查找短语时显示部分匹配
'hls' 'hlsearch'        高亮显示所有的匹配短语

选项名可以用完整版本,也可以用缩略版本。

帮助

你可以通过 <HELP>键, <F1>键或者 :help 命令来打开帮助

提供一个正确的参数给 :help 命令,您可以找到关于该主题的帮助。如:

:help w
:help c_CTRL-D
:help insert-index
:help user-manual

CTRL-W CTRL-W (两次) 可以使您在窗口之间跳转

尾巴

vim 教程到此就结束了。本教程只是为了简明地介绍一下 Vim 编辑器,但已足以让您很容易使用这个编辑器了。毋庸质疑,vim还有很多很多的命令,本教程所介
绍的距离完整的差得很远。

所以您要精通的话,还望继续努力哦。下一步您可以阅读 Vim 的用户手册,使用的命令是: :help user-manual

License:  CC BY 4.0