LinuxVim

Vim入门基础教程

2017-05-07  本文已影响762人  波段顶底

刚入门 Vim,网上找了很多资料,有的太复杂不适合我这样的新手,有的不全,自己动手整理一份。参考了一些资料,备注链接放在下面,侵权删。

如何你想要成为一个vim的 superstar,我需要给你一些警告:

而Kana大神也说过,对vim的掌握有五个层次:

所以,我猜你可能需要3周甚至更多时间的苦练,而不是3天,才能更有效率的使用它。

Vim 世界观

Vi 最初是由 Bill Joy 在 1976 年编码实现的。而 Vim (Vi IMproved) 则是改进的 Vi,由 Bram Moolenaar 在 1991 年开发并发布。Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器。因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户、管理员必须掌握并熟练使用的编辑工具之一。尤其是在没有图形界面的情况下,更是离不开 Vi/Vim。Vi/Vim 命令非常多、用法极为灵活,掌握起来有一定的难度。本文为入门教程,关于 Vi/Vim 各种定制后的功能不在本文讨论范围之列。

Vi和Vim

在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改! 与微软 Windows 系统不同的是,如果你用惯了 Microsoft Word 的话,在 Linux 的文本模式下,会觉得文书编辑程序都没有窗口接口来的直观与方便,那么问题来了,干嘛还要学这个不是很友善和方便的vi编辑器呢?因为:

其实重点是上述的第二点,因为有太多 Linux 上面的指令都默认使用 vi 作为数据编辑的接口,所以你必须、一定要学会。

什么是 Vim 呢?

其实你可以将 vim 视作 vi 的进阶版本,vim 可以用颜色或底线等方式来显示一些特殊的信息。 举例来说,当你使用 vim 去编辑一个 C 程序语言的档案,或者是shell script程序时,vim 会依据档案的扩展名或者是档案内的开头信息, 判断该档案的内容而自动调用该程序的语法判断式,再以颜色来显示程序代码与一般信息。也就是说, 这个 vim 已经是个『程序编辑器』了!甚至一些 Linux 基础配置文件内的语法,都能用 vim 来检查!
简单来说, vi 是老式的文本处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim 则可以说是程序开发者的『程序编辑器』了,就连 vim 的官网也说 vim 是一个『程序开发工具』而不是文本处理软件。 因为 vim 里面加入了很多额外的功能,例如支持正规表示法的搜寻架构、多档案编辑、区块复制等等。

简单讲选择它就是因为它:

Better, Stronger, Faster.

学习 vim 并且它可能会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。

提示:在 Linux 下,如果以 root 用户登录系统的话,通过 vi 命令打开的 Vim 编辑器往往只加载最基本的功能,像语法加亮着色的功能基本上没有。在 root 用户下使用 Vim 所有功能的技巧是用 vim 命令打开 Vim 编辑器。

怎么进入 Vim?

可以在终端(不明白什么是终端的,请自行谷歌命令行、终端、shell、bash了解)输入下面的命令:

$vim [filename]

其中filename是文件的路径。如果文件不存在,它将为你建立一个新文件。

Vim的三种操作模式

Vim编辑程序有三种操作模式,分别称为编辑模式插入模式命令模式

编辑模式:用以执行命令,也称为Normal正常模式,也是进入Vim的缺省模式。进入Vim后会直接进入编辑模式(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来操作文本, 也可以使用『复制、剪切、粘贴』来处理文本数据,删除正文和插入新的正文。但是却是无法编辑文本内容的!

插入模式:即 Insert 模式,用来输入文本,就像你用“记事本”一样。进入Vim后会直接进入编辑模式,要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『 INSERT 或 REPLACE 』的字样,此时才可以进行编辑,可以输入字符。而如果要回到一般模式时, 则必须要按下『Esc』这个按键才可退出编辑模式。

命令模式:用来执行冒号命令。在编辑模式下输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以进行保存、查找、替换、显示行号、退出、配置Vim操作等等的动作。

简单的说,我们可以将这三个模式想成底下的图标来表示:


i → Insert 模式,按 ESC 回到 Normal 模式。
x → 删当前光标所在的一个字符。
dd → 删除当前行,并把删除的行存到剪贴板里。
p → 粘贴剪贴板。
:wq → 存盘 + 退出 (:w 存盘后可以跟文件名,:q 退出,:q!强制退出)
:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。

推荐
强例推荐使用hjkl键盘移动光标,但不必需,你也可以使用光标键 (←↓↑→)移动。
以 : 开始的命令你需要输入 <enter> 回车结束,例如我写成 :q 也就是说你要输入 :q然后回车。

编辑模式下命令

跳转

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

k或↑              上移
j或↓               下移
h或←            左移
l或→             右移

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

ctrl+f         在文件中前移一页(相当于 page down)
ctrl+b        在文件中后移一页(相当于 page up)
ctrl+d        屏幕向下移动半页
ctrl+u        屏幕向上移动一页

更大范围的移动:

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

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

H                  将光标移到屏幕上的起始行(或最上行)
M                  将光标移到屏幕中间
L                  将光标移到屏幕最后一行
G                  将光标定位到文件最后一行起始位置
NG或Ngg            将光标定位到第 N 行的起始位置
gg                 将光标定位到文件第一行起始位置
N(ENTER)           光标下移N行

同样需要注意字母的大小写。H 和 L 命令还可以加数字。如 2H 表示将光标移到屏幕的第2行,3L 表示将光标移到屏幕的倒数第3行。
当将光标移到所要的行是,行内移动 光标可以用下面的命令来实现:

w                右移光标到下一个字的开头;
e                右移光标到一个字的末尾;
b                左移光标到前一个字的开头;
0                数字0,左移光标到本行的开始;
$                右移光标,到本行的末尾;
^                移动光标,到本行的第一个非空字符。
+                光标移动到非空格符的下一行;
-                光标移动到非空格符的上一行n;
n                n表示数字,按下数字后按空格键,光标右移n个字符,会跨行移动。

查找、搜索匹配

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

/str1                正向搜索字符串 str1;
n                    继续搜索,重复之前的查找,但是向上重复查找;
N                    继续搜索,重复之前的查找,但是向下重复查找;
?str2                反向搜索字符串 str2 。
:n1,n2s/word1/word2/g   这个操作代表在n1与n2行之间查找word1并用word2来代替它
:1,$s/word1/word2/g     这个操作是从第一行到最后一行进行查找替换
:1,$s/word1/word2/gc    与上面一样只不过多了个确认confirm

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

替换和删除

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 行内容,并去除空隙;

其他常用的删除命令有:

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               用输入的正文替换从本行开头到光标的所有字符。

Vim 入门教程
vim 程序编辑器
http://www.jianshu.com/p/7678a7e6973e
http://www.jianshu.com/p/bcbe916f97e1
http://coolshell.cn/articles/5426.html

上一篇下一篇

猜你喜欢

热点阅读