VIM自带入门教程

Posted by Azrael on October 28, 2017

其实Linux系统下的 VIM 已经自带了入门教程,现把常用命令摘记如下:

打开入门教程方法

在命令行下输入:

$ vimtutor

1.1 移动光标

通过 hjkl

分别向 移动。

1.2 退出VIM

  • Esc 键来确保进入 Normal 模式
  • 输入 :q!,然后按下 Enter 键,就会退出 vim 编辑器,并且不保存更改
  • 在命令行界面后重新输入 vimtutor 命令进入到 vim 教程

1.3 文本编辑:删除

通过 x 来删除光标所在的字符(未说明的情况都是在Normal模式下)

1.4 文本编辑:插入

  • 输入 i 进入 Insert 模式,可以在光标前输入字符
  • Esc 来回到 Normal 模式

1.5 文本编辑:附加

  • 输入 A 光标移动到行末并且进入 Insert 模式,可以在行末输入字符
  • Esc 来回到 Normal 模式

1.6 编辑文件

  • 输入 :q! ,然后按下 Enter 键,就会退出 VIM 编辑器,并且不保存更改
  • 然后执行下面命令:

$ vim tutor

会使用 vim 打开 tutor 文件,如果没有该文件便新建一个 tutor 文件

  • 输入 :wq,然后按下 Enter 键,便退出并保存更改到改文件

2.1 & 2.2 删除命令

  • Normal 模式下,按下 dw 命令(先按下d再按下w)就可以删除一个单词
  • 按下 d$ 命令,删除当前光标位置到行尾的内容

2.3 命令加动作

d 表示执行一个删除操作(可以理解为准备删除),加上一个动作完成对不同对象的删除操作。下面的w e $ 都是动作,例如:

  • w 表示,从当前光标删除到下一个单词(word)的开头位置,不包括下一个单词的首字符
  • e 表示,从当前光标删除到本单词的尾字符,包括本单词的尾字符
  • $ 表示,从当前光标删除到位置到行尾,包括尾字符

可以通过这种操作加动作去理解 VIM 的巧妙的设计思想,达到举一反三的效果

2.4 对一个动作进行重复

在一个动作前面加一个数字N,可以重复该操作N遍

Normal 模式下,w 表示光标跳到下一个单词的开头

  • 2w 表示光标移动到后面第二个单词的开头
  • 3e 表示光标移动到后面第三个单词的末尾
  • 0 表示移动光标到本行的开始

补充:^ 表示移动光标到本行的首字符,^$ 和正则中的用法可以是对应上的

2.5 对删除操作进行重复

d [number] motion 可以进行多次删除操作,例如:

  • d5w 可以删除5个单词(word)
  • d3e d3$ 等其他删除操作同理

补充:3dwd3w3ded3e 效果是一样的

2.6 行操作

  • dd 命令可删除一行
  • 3ddd3d 可以删除三行

2.7 撤销操作

  • 使用 u 去撤销上一个命令(也就是 undo
  • 使用 U 去修复一整行
  • 可以使用 u 去撤销 U 命令
  • 当使用了撤销操作,可以按下 Ctrl-R 去取消撤销(也就是redo

按住 Ctrl 键再按 r 写成 Ctrl-R

3.1 PUT命令

  • Normal 模式下,按 p 可以把删除的文本添加到光标的后一个位置

3.2 置换命令

  • r 为置换命令, rx 表示用 x 代替当前字符

3.3 & 3.4 更改操作

  • ce 命令,会从光标删除到单词(word)末尾,并且进入 Insert 模式,所以 ce 来更改某个错误的词会很方便
  • 和删除命令一样,ce 也可以重复多次操作,c [number] motion,同理不赘述
  • 常见的还有 c$ c0 c^ 等更改操作,结合动作,应该很好理解

c 命令和 d 命令一个比较大的区别就是 c 命令执行之后会进入 Insert 模式

4.1 光标定位与文件状态

  • Ctrl-G 会显示光标在文件中的位置,以及文件的状态
  • G 命令会移动光标到文件底部
  • gg 命令会移动光标到文件顶部
  • [number] G 光标会移动到 number 行,485G 会移动到 485 行,也就是 vimtutorLesson 4.1 的标题处

4.2 搜索命令

  • Normal 模式下按 / 键,底部会出现 / 字符,可以输入字符进行搜索,然后按下 <ENTER> 搜索
  • n 跳到下一个搜索结果,N 跳到上一个搜索结果
  • Ctrl+OCtrl+I 分别跳转到更前面和更后面的光标位置

4.3 括号匹配搜索

  • % 去寻找一个匹配的 ) ] } 括号
  • 可以在括号中很方便地定位括号,以及在左右两边括号中跳转

4.4 替代命令

  • :s/old/new 命令表示用 new 替代本行的第一个 old
  • :s/old/new/g 命令表示本行的全部 old 都用 new` 替代
  • :#,#s/old/new/g 命令和上面的类似,# 来限定行的范围,:1,10s/old/new/g 表示1-10行
  • :%s/old/new/g 命令表示应用与整个文件,:%s/old/new/gc 也是整个文件,只是每一个都需要你去决定是否替换

5.1 & 5.2 执行命令,行命令

  • 在按下 :! 后再输入命令行命令,按下 <ENTER> 就可以执行了
  • :w FILENAME 可以保存更改到 FILENAME 文件中
  • 可以尝试 :!ls 等常用命令行命令

5.3 选择文本去写入

  • v 会进入 Visual 模式,这时候可以移动光标去选择文本
  • 选择好文本后,输入: 后,屏幕底部会出现 :'<,'> ,继续输入 w FILENAME 就可以把选择的文本存入 FILENAME 文件中
  • 选择好文本也可以进行其它操作,例如 d 可以删除所选择的文本

5.4 获取、合并文件

  • :r FILENAME 命令可以把 FILENAME 文件的内容插入到光标的下一行中
  • :r !ls 命令可以把命令行 ls 命令中的输出插入到光标下一行中

6.1 打开命令

  • o 命令在光标下面一行新开一行,并进入 Insert 模式,O 在光标上面

6.2 附加命令

  • a 命令在光标后面进入 Insert ,与之对比,i 是在光标之前插入
  • A 命令在行末添加字符,这三个命令都会进入 Insert 模式

6.3 另一种替代的方法

  • R 命令会进入 Replace 模式,在该模式下,每个按键都会替代原来的字符,也可以不用把它理解成 Replace 模式,而是类似于 r 命令的高级方法
  • 同样,按 Esc 退出 Replace 模式

6.4 复制和粘贴文本

  • y 命令复制文本,p 命令粘贴文本
  • v 进入 Visual 模式,选择文本,y 进行复制,p 进行粘贴
  • 也可以在 Normal 下使用 y 命令,yw 复制一个单词(word),y$
  • p 在光标后粘贴

6.5 设置选项

对搜索或替代等方法进行一些设置

  • :set ic 意味着忽略大小写,icIgnore case 的缩写
  • :set hls ishlshighlight search 的缩写,isincrease search 的缩写。开启 hls 搜索结果会出现高光,is 加强版搜索,开启后会在输入的时候开始匹配结果,而不是在按下键后
  • 要取消以上功能只要加个 no,例如::set noic:set nohls:set nois

7.1 获取帮助

使用在线帮助系统

  • :help 进入帮助文件,出现一个新的窗口
  • Ctrl-W Ctrl-W(按两次)会从一个窗口跳到另一个窗口
  • :q 可以退出帮助文件窗口

你可以在帮助文件中找到各种建议:

  • :help w 关于 w 命令的
  • :help c_Ctrl-D
  • :help insert-index
  • :help user-manual

7.2 创建一个启动脚本文件

比起 VIVIM有许多新的特性,但是默认是关闭的,为了使用这些特性,需要新建一个启动脚本文件:

  • :e ~/.vimrc 命令,在当前目录下新建一个 .vimrc 文件
  • :r $VIMRUNTIME/vimrc_example.vim 命令,载入的设置文件模版
  • :w 写入文件,大功告成,下次载入编启动了很多新的特性
  • 如果想了解更多 .vimrc 的相关信息,可以使用 :help vimrc-intro 命令