Learn VIM

动手学VIM编辑器

0x1:What is VIM editor?

vi编辑器通常被简称为vi,而vi又是visual editor的简称 。它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi 编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。没有菜单,只有命令,且命令繁多。vi有3种基本工作模式:命令行模式、文本输入模式和末行模式。
Vim是vi的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。

—摘自百度百科

0x2:命令模式情形下的一些命令
进入命令模式的方法:ESC

#查看VIM编辑器的帮助信息。

:help

image

#正常退出退出编辑器

:q

#保存并退出编辑器

:wq

#保存退出编辑器,并将文件存储为filename

:wq filename

#强制退出,不保存

:q!

#打开某文件(需保存当前文件,否则会报错)

:e /root/file

#强制打开某文件

:e! /root/file

#读取某文件,追加到当前文件末尾

:r /root/file

#保存文件

:w (文件路径)

0x3:插入模式的一些快捷按键操作

#进入插入模式,将光标放在当前光标之后

a

#进入插入模式,将光标放在当前光标所在的行尾

A

#在当前光标的下一行插入新行,并将光标放在新行的行首

o

#在光标的前一行插入一行,并将光标放在行首

O

#在光标所在位置进入插入模式,貌似这个用得最多了

i

0x4 移动光标
在进行编辑的时候,可能需要移动光标位置,进行修改或者输入新的内容,除了使用方向键之外,在命令模式下,使用hmjkl也能够快速的移动光标。

k:向上移动光标

j:向下移动光标

h:向前移动光标

l:向右移动光标

这种感觉有点像玩FPS游戏的wasd方式,不过是把操作放在了右手上而已。用起来感觉还蛮不错的。

0x5 删除文本
使用退格键或者delete键可以删除当前光标前或所在处的字符,然而在VIM中还可以使用命令来删除我们想删除的内容哦。

x :删除当前光标所在处的字符,如果想删除多个字符,连续着按。

dd :删除当前光标所在行,如果想删除多行,可以用ndd的方式,n为你想删除的行数。

dw :删除光标处的单词,包括词尾的空格。

de :删除当前光标所在处的单词,和dw的区别在于保留了单词词尾的空格。

d^ :删除当前光标所在位置到行首的所有字符。

d$ :删除当前光标到行尾的所有字符。

J :将当前光标所在行和下一行合并(删除行尾的换行符)

0x6 撤销和恢复

u :撤销上一步操作,可多次使用。

Ctrl+r :放弃上一次撤销操作,可使用多次。

0x7 快速移动光标

b :将光标移动到当前光标所在单词的前一个单词的首字母,可以使nb,即移动n个单词的位置。

w :将光标移动到当前光标的后一个单词的首字母,可以使nw,即移动到n个单词后的首字母。

e :移动到后一个单词的尾字母,可以使ne,效果与之前的效果类似。

ge :与e的作用相反,移动光标至前一个单词的尾字母,也可是是nge,n表示需要跨过的单词数目。

^ :快速移动光标到行首,Home键,0键也可以移动光标的行首。

$ :快速移动光标到行尾,End键也可以移动光标到行尾。n$,可以将光标移动到当前行之后n-1行的末尾。

g :跳到当前文本的第一行,也可以使用1G。

G :跳到当前文本的最后一行。

nG :跳转到第n行,其中n为一个正整数。

当然,咱们的鼠标也是可以定位光标的,哪里需要点哪里!

0x8 查找功能
在命令模式下,正向查找的命令为“/”

/pattern :pattern为需要查找的字符串,可以是正则表达式。

在正向查找状态下

n :跳转到下一条匹配的内容。
N :跳转到上一条匹配的内容。

反向查找的命令为“?”

?pattern

在反向查找状态下

n :跳转到上一条匹配的内容。
N :跳转到下一条匹配的内容。

0x9 替换功能
替换使用的命令是s,基本格式如下:

: s/pattern1/pattern2/

pattern1表示要查找的文本,pattern2为替换后的文本,“/”为分隔符,分隔符也可以是“:”。

谨慎的查找替换

:%s/pattern1/pattern2/gc

执行这条命令之后,VIM会查找到所有匹配pattern1的字符串,并提示用户是否需要进行替换。

以上是VIM编辑器的一些基础的使用方法,其功能还很强大,待之后用到了再补充吧。

参考书:《Linux 命令、编辑器与SHELL编程》 王刚等著