Vim入门基础知识集锦

想学习Vim,但是Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础。在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来。特点是偏向基础,但对入门者来说足够全面,而且结构框架清晰。

1. 简介

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

$vim [filename]

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

将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete 

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 将光标移到屏幕最后一行。

同样需要注意字母的大小写。H 和 L 命令还可以加数字。如 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常规的删除命令是 d、 x (前者删除 行 ,后者删除 字符 ),结合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 行内容,并去除空隙;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14271.html