Fork me on GitHub

Linux 入门总结(六)

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」。

Vim 工作模式

命令模式和编辑模式常用命令


插入命令
注意:在使用小 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
16
J          // 合并光标所在行及下一行为一行(在命令模式下)
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#」^p 表示 ctrl + p 的快捷键,该快捷键代表的命令是:跳到行首并进入插入模式,插入 # 号,然后退出。eg:「:map ^b 0x」表示用快捷键 ctrl + b 表示删除行首字母。^ 表示 ctrl 的意思,如:^c 就表示 ctrl + c。

注意:设置快捷键的方式是,使用 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

推荐阅读

Vim速查表
vim 使用技巧
Vim 的使用方法
增强 Vim 编辑器
Vim 命令、操作、快捷键全集

-------------本文结束感谢您的阅读-------------

本文标题:Linux 入门总结(六)

文章作者:Yan ChongSheng

发布时间:2018年09月25日

最后更新:2018年10月18日

原始链接:yanchongsheng.github.io/2018/09/25/Linux-2018-09-25-Linux入门总结-六/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

开启打赏模式