Linux 入门总结(六) —— Vim 编辑器
Vim 简介
Vim 在早期的 Linux 版本中又叫 Vi(visual interface),Vim 是 Vi 的升级版。Vim 是一个功能强大的全屏幕文本编辑器,是 Linux/Unix 上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。Vim 没有菜单,只有命令。
Vim 有三种工作模式。可以使用 vim 加上任何一个已经存在或者你想创建的文件名就可以进入 Vim 默认的命令模式。vi 和 vim 都是命令,两个的效果一模一样,一个是早期的,一个是 Vi 的增强版(全名 Vi improved 简称 Vim) 。Vim 命令默认进入的是命令模式,在该模式下,你敲的任何一个字符系统都会当成命令来处理。要想进入文本的插入模式,你需要输入插入命令,比较常用的有 i、a、o 就会进入到插入模式,要想退出插入模式,则可以使用 Esc 键,表示退出插入模式,但是此时进入到的是命令模式,此时你输入的任何内容都会被当成命令。在命令模式里面按「:」冒号就会进入到编辑模式,此时输入的就是编辑模式的命令了,即你输入的内容都会被当成是编辑模式的命令。比如设置行号命令:set number(简写:set nu)。编辑模式的命令执行完成以后它会自动的回到命令模式,所以冒号后面输入的内容才是编辑模式的命令。保存退出命令模式:「:wq」。
命令模式和编辑模式常用命令
注意:在使用小 a 的时候光标会自动往后跳一格,例如:we 光标现在在 w 上,按 a 以后光标自动跳到 e 上,然后在 e 的前面插入,实际上就是在 w 的后面插入。
注意:上图中前面有冒号的表示编辑模式命令,没有冒号的表示命令模式命令。
Linux 中的查找是严格区分大小写的,但是可以使用「:set ic」(注意冒号)设置不区分大小写;可以使用「:set noic」(注意冒号)设置区分大小写。「:%s 表示全局替换」「g 表示替换的时候不询问」「c 表示替换的时候要询问」
其他 Vim 常用操作1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16J // 合并光标所在行及下一行为一行(在命令模式下)
U // 撤销对当前行的所有操作
/string // 向光标下搜索 string 字符串
?string // 向光标上搜索 string 字符串
N // 向上搜索前一个搜索动作
yw // 复制从光标开始到词尾的字符
nyw // 复制从光标开始的 n 个单词
y^ // 复制从光标到行首的内容
y$ // 复制从光标到行尾的内容
f // 在当前行查找字符,fx 找到光标后第一个为 x 的字符,3fd 找到第三个为 d 的字符
F // 同 f 反向查找
:!命令 // 执行外部命令
# 命令模式下移动光标
h 向左、j 向下 、k 向上、l 向右
空格键向右、Backspace 向左、Enter 移动到下一行首、- 移动到上一行首
总结:以下为 vim 必须掌握的常用命令:dd 剪切当前行,ndd 剪切当前行以下 n 行;x 删除光标所在处字符;yy 复制当前行,nyy 复制当前行以下 n 行;小写 p 粘贴在当前光标所在行的行下,大写 P 粘贴到行上;R 从光标所在处开始替换字符,按 Esc 结束;u 取消上一步操作!Ctrl+r 反向撤销;ZZ 保存退出的快捷键;当如果不知道自己处在什么模式时可以按 2 次 Esc 键即可回到命令模式。
Vim 使用技巧
「:r 文件名」可以导入一个文件的内容到当前 vim 编辑的文件之中。eg:「:r /etc/issue」导入的位置为刚才你光标所在的位置。
「:!命令」可以在不退出 vim 的情况下,执行系统响应的操作命令。eg:「:!which ls」
「:r!命令」将一个命令的执行结果导入到当前的 vim 文件里面。eg:「:r!date」
自定义快捷键「:map 快捷键 触发命令」。eg:「:map ^p I#
注意:设置快捷键的方式是,使用 ctrl + v + 所需字母;或者先按 ctrl + v,再按 ctrl + 所需字母,效果是一样的。这种是构造 ctrl + 字母的快捷键的方法。
连续行注释:「n1,n2s/^/#/g」表示从 n1 行开始到 n2 行,每行的行首都增加 # 号,并且替换的时候不询问。 去掉连续行注释:「n1,n2s/^#//g」表示从 n1 行开始到 n2 行,每行的行首的 # 号都替换为空,并且替换的时候不询问。 如果注释符是「//」则需要转义:「:n1,n2s/^/\/\//g」表示从 n1 行开始到 n2 行,每行的行首都增加 // 号,并且替换的时候不询问。注意:「^」表示行首的意思。注意:在 Linux 中「\/」中「\」表示转义符的意思「/」它才是真正的符号。
替换命令:「:ab 旧内容 新内容」即「:ab a b」这个命令可以简单的理解为:当你输入 a,它会自动的帮你转换成 b。eg: 「:ab sb hello」 当前输入 sb 的时候,会自动的替换成 hello。
注意:以上定义的快捷键重启以后都不存在,要想永久生效,你需要将其定义在每个用户的宿主(家)目录中的配置文件里面。以 root 为例:vi /root/.vimrc (注意这个配置文件叫 .vimrc)这里面只能放一些编辑模式的命令,比如:设置行号、设置快捷键、ab 命令(前面可以没有冒号「:」)。
/root/.vimrc 文件中自定义永久有效的快捷键1
2
3
4
5
6
7
8# vim 自动设置行号
set nu
# ctrl + p 表示 I#<Esc>
map ^p I#<Esc>
# 设置 ab 命令
ab sb hello