21 Vim 基本操作(一)

2016-09-25  本文已影响89人  StarShift

1. 简介

Vim(Vi[Improved])编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统的Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立、修改文本文件。进入Vim编辑程序,可以在终端输入下面的命令:

$vim [filename]

其中filename是要编辑器的文件的路径名。如果文件不存在,它将为你建立一个新文件。Vim编辑程序有三种操作模式,分别称为 编辑模式插入模式命令模式,当运行Vim时,首先进入编辑模式。

2. 编辑模式

Vim编辑方式的主要用途是在被编辑的文件中移动光标的位置。一旦光标移到到所要的位置,就可以进行剪切和粘贴正文块,删除正文和插入新的正文。当完成所有的编辑工作后,需要保存编辑器结果,退出编辑程序回到终端,可以发出ZZ命令,连续按两次大写的Z键。

2.1 跳转

如果键盘上有上、下、左、右箭头的导航键,就由这些键来完成光标的移动。另外,可以用下面的键完成同样的 按字符移动 功能:

k   上移;
j   下移;
h   左移;
l   右移。

上面这4个键将光标位置每次移动一行或一个 字符 。Vim还提供稍大范围移动光标的命令:

ctrl+f    在文件中前移一页(相当于 page down);
ctrl+b   在文件中后移一页(相当于 page up);

更大范围的移动:

*       当光标停留在一个单词上,* 键会在文件内搜索该单词,并跳转到下一处;
#       当光标停留在一个单词上,# 在文件内搜索该单词,并跳转到上一处;
(/)     移动到 前/后 句 的开始;
{/}     跳转到 当前/下一个 段落 的开始。
g_      到本行最后一个不是 blank 字符的位置。
fa      到下一个为 a 的字符处,你也可以fs到下一个为s的字符。
t,      到逗号前的第一个字符。逗号可以变成其它字符。
3fa     在当前行查找第三个出现的 a。
F/T     和 f 和 t 一样,只不过是相反方向;
gg      将光标定位到文件第一行起始位置;
G       将光标定位到文件最后一行起始位置;
NG或Ngg 将光标定位到第 N 行的起始位置。

在屏幕中找到需要的 一页 时,可以用下面的命令快速移动光标:

H 将光标移到屏幕上的起始行(或最上行);
M 将光标移到屏幕中间;
L 将光标移到屏幕最后一行。

同样需要注意字母的大小写。HL命令还可以加数字。如 :

2H    表示将光标移到屏幕的第2行,
3L    表示将光标移到屏幕的倒数第3行。

当将光标移到所要的行时,行内移动 光标可以用下面的命令来实现:

w   右移光标到下一个字的开头;
e   右移光标到一个字的末尾;
b   左移光标到前一个字的开头;
0   数字0,左移光标到本行的开始;
$   右移光标,到本行的末尾;
^   移动光标,到本行的第一个非空字符。

2.2 搜索匹配

和许多先进的编辑器一样,Vim 提供了强大的字符串搜索功能。要查找文件中指定字或短语出现的位置,可以用Vim直接进行搜索,而不必以手工方式进行。搜索方法是:键入字符/, 后面跟以要搜索的字符串,然后按回车键。编辑程序执行正向搜索(即朝文件末尾方向),并在找到指定字符串后,将光标停到该字符串的开头;键入n 命令可以继续执行搜索,找出这一字符串下次出现的位置。用字符 ?取代 /,可以实现反向搜索(朝文件开头方向)。例如:

/str1       正向搜索字符串 str1;
n           继续搜索,找出 str1 字符串下次出现的位置;
N           继续搜索,找出 str1 字符串上一次出现的位置;
?str2       反向搜索字符串 str2 。

无论搜索方向如何,当到达文件末尾或开头时,搜索工作会循环到文件的另一端并继续执行。Vim中执行搜索匹配最强大的地方是结合 正则表达式 来搜索,后续将会介绍。

2.3 替换和删除

Vim常规的删除命令是 dx(前者删除 行,后者删除 字符),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行。例如:

rc       用 c 替换光标所指向的当前字符;
nrc      用 c 替换光标所指向的前 n 个字符;
5rA      用 A 替换光标所指向的前 5 个字符;
x        删除光标所指向的当前字符;
nx       删除光标所指向的前 n 个字符;
3x       删除光标所指向的前 3 个字符;
dw       删除光标右侧的字;
ndw      删除光标右侧的 n 个字;
3dw      删除光标右侧的 3 个字;
db       删除光标左侧的字;
ndb      删除光标左侧的 n 个字;
5db      删除光标左侧的 5 个字;
dd       删除光标所在行,并去除空隙;
ndd      删除(剪切) n 行内容,并去除空隙;
3dd      删除(剪切) 3 行内容,并去除空隙;

其他常用的删除命令有:

d$      从当前光标起删除字符直到行的结束;
d0      从当前光标起删除字符直到行的开始;
J       删除本行的回车符(CR),并和下一行合并。

Vim常规的替换命令有 c和 s,结合Vim的其他特性可以实现基础的替换功能,不过替换命令执行以后,通常会由 编辑模式 进入 插入模式

s       用输入的正文替换光标所指向的字符;
S       删除当前行,并进入编辑模式;
ns      用输入的正文替换光标右侧 n 个字符;
nS      删除当前行在内的 n 行,并进入编辑模式;
cw      用输入的正文替换光标右侧的字;
cW      用输入的正文替换从光标到行尾的所有字符(同 c$ )
ncw     用输入的正文替换光标右侧的 n 个字;
cb      用输入的正文替换光标左侧的字;
ncb     用输入的正文替换光标左侧的 n 个字;
cd      用输入的正文替换光标的所在行;
ncd     用输入的正文替换光标下面的 n 行;
c$      用输入的正文替换从光标开始到本行末尾的所有字符;
c0      用输入的正文替换从本行开头到光标的所有字符。

2.4 复制粘贴

从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。用户可将其粘贴到正文中的指定位置。完成这一操作的命令是:

p       小写字母 p,将缓冲区的内容粘贴到光标的后面;
P       大写字母 P,将缓冲区的内容粘贴到光标的前面。

如果缓冲区的内容是字符或字,直接粘贴在光标的前面或后面;如果缓冲区的内容为整行正文,执行上述粘贴命令将会粘贴在当前光标所在行的上一行或下一行。注意上述两个命令中字母的大小写。
Vim 编辑器经常以一对大、小写字母(如 p 和 P)来提供一对相似的功能。通常,小写命令在光标的后面进行操作,大写命令在光标的前面进行操作。
有时需要复制一段正文到新位置,同时保留原有位置的内容。这种情况下,首先应当把指定内容复制(而不是剪切)到内存缓冲区。完成这一操作的命令是:

yy       复制当前行到内存缓冲区;
nyy      复制 n 行内容到内存缓冲区;
5yy      复制 5 行内容到内存缓冲区;
“+y      复制 1 行到操作系统的粘贴板;
“+nyy    复制 n 行到操作系统的粘贴板。

2.5 撤销和重复

在编辑文档的过程中,为消除某个错误的编辑命令造成的后果,可以用撤消命令。另外,如果用户希望在新的光标位置重复前面执行过的编辑命令,可用重复命令。

u       撤消前一条命令的结果;
.       重复最后一条修改正文的命令。

3. 插入模式

3.1 进入插入模式

在编辑模式下正确定位光标之后,可用以下命令切换到插入模式:

i      在光标左侧插入正文
a      在光标右侧插入正文
o      在光标所在行的下一行增添新行
O      在光标所在行的上一行增添新行
I      在光标所在行的开头插入
A      在光标所在行的末尾插入

3.2 退出插入模式

退出插入模式的方法是,按 ESC
键或组合键 Ctrl+[
,退出插入模式之后,将会进入编辑模式 。

上一篇下一篇

猜你喜欢

热点阅读