最全文本编辑器VIM使用指南

vim,一个纯文本(纯文本信息,ASCII text)编辑器,Vi(Visual Interface) IMproved,是一个模式化的编辑器
vim有自带的教程,也是linux的一个内置命令
~]# vimtutor

## 一、基本模式分类
1 编辑模式(命令模式)
2 输入模式(插入模式)
3 末行模式(vim内置的命令行接口)

## 二、模式转换
1 编辑模式 –> 输入模式

快捷键 | 含义
——— | ——
i | insert,在光标所在处输入
a | append,在光标所在处后方输入
o | 在光标所在处下方新建一行并开始输入
I | 在光标所在行的行首输入
A | 在光标所在行的行尾输入
O | 在光标所在行的上方新建一行并开始输入

2 输入模式 –> 编辑模式
键入ESC键即可

3 编辑模式 –> 末行模式(命令行模式)
键入:即可

4 末行模式 –> 编辑模式
键入ESC键即可

## 三、进入文件编辑界面
vim [options] [file ..]

动作 | 含义
—— | ——-
\(什么都不加) | 使用vim打开文件,并且默认将光标放在第一行行首上
+# | 打开文件后,直接让光标处于第#行的行首
+/PATTERN | 打开文件后,直接将光标处于第一个被PATTERN匹配到的行的行首

例如:
`~]# vim +10 /etc/rc.d/init.d/functions` # vim打开文件,并且将光标自动放在第10行行首
`~]# vim + /etc/rc.d/init.d/functions` # vim打开文件,并且将光标自动放在末行行首

## 四、关闭编辑的文件

快捷键 | 含义
——— | ——
ZZ | 保存并退出
:q | 退出,但不保存
:q! | 强制退出,丢弃做出的修改
:wq | 保存并退出
:w /path/to/somefile | 保存至指定文件中
| 保存并退出

## 五、光标的跳转
1 字符间跳转

快捷键 | 含义
——— | ——
h | 光标向左跳转一个字符
l | 光标向右跳转一个字符
j | 光标向下跳转一个字符
k | 光标向上跳转一个字符
Num | 与字符跳转快捷键一同使用,向指定方向跳转字符的个数,例如10h,向左跳转10个字符

2 单词间跳转

快捷键 | 含义
——— | ——
w | 跳转到下一个单词的词首
e | 跳转到当前或下一个单词的词尾
b | 跳转到当前或前一个单词的词首
Num | 与单词跳转快捷键一同使用,向指定方向跳转单词的个数,例如10w,向后跳转10个单词

3 行首行尾跳转

快捷键 | 含义
——— | ——
^ | 跳转至行首的第一个非空白字符
0 | 跳转至一行绝对的行首,Tab字符不算,如果行首有Tab键,则会跳到Tab键之后
$ | 跳转至一行的绝对的行尾
4 行间跳转

快捷键 | 含义
——— | ——
#G | 跳转至第#行的行首
1G或gg | 跳转至第一行行首
G | 跳转至末行行首

5 句间跳转

快捷键 | 含义
——— | ——
) | 跳转至下一句
( | 跳转至前一句
Num | 与句跳转快捷键一同使用,向指定方向跳转句的个数,例如10),向后跳转10句

6 段间跳转

快捷键 | 含义
——— | ——
} | 向后跳转一个段落
{ | 向前跳转一个段落
Num | 与段落跳转快捷键一同使用,向指定方向跳转的段落个数,例如2},向后跳转2个段落

## 六、翻屏操作

快捷键 | 含义
——— | ——
Ctrl+f | 向文件尾部翻一屏
Ctrl+b | 向文件首部翻一屏
Ctrl+d | 向文件尾部翻半屏
Ctrl+u | 向文件首部翻半屏
Enter | 向文件尾部逐行移动

##七、编辑命令
1 字符编辑

快捷键 | 含义
——— | ——
x | 删除光标所在处的字符
#x | 删除光标所在处起始的#个字符
xp | 交换光标所在处及其后面的字符的位置

2 替换命令

快捷键 | 含义
——— | ——
r | 替换光标所在处的字符

3 删除命令

快捷键 | 含义
——— | ——
d | 删除命令,可结合光标跳转字符,实现范围删除
d$ | 删除当前光标所在处至行尾的全部字符
d^ | 删除当前光标所在处至行首的全部字符
dw | 删除当前光标所在处至下一个单词的词首的字符,支持加数字
de | 删除当前光标所在处至下一个单词的词尾的字符,支持加数字
db | 删除当前光标所在处至前一个单词的词首的字符,支持加数字
dd | 删除光标所在行的整行,支持加数字
#dd | 删除光标所在行开始往下的#行字符

4 粘贴命令

快捷键 | 含义
——— | ——
p | 如果缓冲区中缓冲的是整行,则将缓冲区中的内容拷贝至当前光标所在行的下方;如果缓冲区中缓冲的不是整行,则将缓冲区中的内容拷贝至当前光标所在处的后方
P | 如果缓冲区中缓冲的是整行,则将缓冲区中的内容拷贝至当前光标所在行的上方;如果缓冲区中缓冲的不是整行,则将缓冲区中的内容拷贝至当前光标所在处的前方

5 复制命令(yank,y)

快捷键 | 含义
——— | ——
y | 复制命令,可结合光标跳转字符
y$ | 复制当前光标所在处至行尾的全部字符
y^ | 复制当前光标所在处至行首的全部字符
yw | 复制当前光标所在处至下一个单词的词首的字符,支持加数字
ye | 复制当前光标所在处至下一个单词的词尾的字符,支持加数字
yb | 复制当前光标所在处至前一个单词的词首的字符,支持加数字
yy | 复制光标所在行的整行,支持加数字
#yy | 复制光标所在行开始往下的#行字符

6 改变命令(change,c)
功能:编辑模式 –> 输入模式,实现删除操作的同时进入输入模式

快捷键 | 含义
——— | ——
c | 删除并切换至输入的命令,可结合光标跳转字符
c$ | 删除当前光标所在处至行尾的全部字符,并转成输入模式
c^ | 删除当前光标所在处至行首的全部字符,并转成输入模式
cw | 删除当前光标所在处至下一个单词的词首的字符,并转成输入模式,支持加数字
ce | 删除当前光标所在处至下一个单词的词尾的字符,并转成输入模式,支持加数字
cb | 删除当前光标所在处至前一个单词的词首的字符,并转成输入模式,支持加数字
cc | 删除光标所在行的整行,并转成输入模式,支持加数字
#cc | 删除光标所在行开始往下的#行字符,并转成输入模式

## 八、其他命令
1 可视化模式
功能:像windows的文本编辑工具一样,可以通过鼠标进行范围选定,然后进行操作

快捷键 | 含义
——— | ——
v | 从光标所在字符开始,根据鼠标选定的范围,以字符为单位进行选择
V | 从光标所在行开始,根据鼠标所选定的范围,以行尾单位进行选择

> 注意:
可视化模式经常要结合编辑命令:d(删除)、c(删除并进入输入模式)、 y(复制)。

2 撤销操作 – undo
功能:对之前进行的操作进行撤销,默认在没有进行手动强制保存之前,可以撤销之前的50个操作。

快捷键 | 含义
——— | ——
u | 逐次撤销之前的操作
#u | 一次撤销之前操作的#次操作

3 恢复此前的撤销

快捷键 | 含义
——— | ——
Ctrl+r | 恢复此前的撤销操作

4 重复此前的操作

快捷键 | 含义
——— | ——
. | 重复上一次执行的操作动作

## 九、末行模式
### 1 地址定界
:start_pos[,end_pos]

表现形式 | 含义
———— | ——
# | 指定特定的第#行,例如,:5即第5行
. | 则表示光标当前所在行
$ | 表示最后一行,例如,:.,$-1表示从当前行到倒数第2行
% | 表示全文,相当于:1,$
m,n | 指定行范围,m为起始行,n为结束行,例如,:5,8即从第5行到第8行
m,+n | 指定行范围,左侧为起始行的编号,右侧为相对左侧行号的偏移量,例如,:5, +3即从第5行到第8行
/PATTERN/ | 从光标所在位置开始向后查找,找到第一个匹配PATTERN的行
/PATTERN/,$ | 从光标所在位置开始向后查找,找到所有匹配PATTERN的行
/PATTERN1/,/PATTERN2/ | 从光标所在位置开始向后查找,范围是从第一次被PATTERN1所匹配到的行开始,至第一次被PATTERN2所匹配到的行结束之间的内容

注意:
上述各种表现形式均可同编辑命令一同使用,实现编辑操作:

操作 | 含义
—— | ——
d | 将框定范围内的文本删除
y | 将框定范围内的文本复制
c | 将框定范围内的文本修改,也就是删除后立即进入输入模式
w /path/to/somefile | 将框定范围内的文本保存至某指定文件
r /path/from/somefile | 将指定的文件中的文本读取并插入至框定位置

### 2 查找功能

表现形式 | 含义
———— | ——
/PATTERN | 从光标当前所在处向文件尾部查找能够被当前模式匹配到的所有字符串;其中,n(下一个匹配的位置,与命令方向相同)、N(上一个匹配的位置,与命令方向相反)
?PATTERN | 从光标当前所在处向文件首部查找能够被当前模式匹配到的所有字符串;其中,n(下一
个匹配的位置,与命令方向相同)、N(上一个匹配的位置,与命令方向相反)

### 3 查找并替换

**功能**:查找匹配到的内容,并替换为想替换的内容,默认仅替换每一行中第一次匹配到的内容
**格式**:s/要查找的内容/替换为的内容/修饰符
> 注意:
查找并替换模式使用”/”来做为每个部分的分隔符,但是如果某一部分中的字符中也出现了”/”,可以把分隔符替换为其他非常用字符,比如#、@等,使之变成:
s#要查找的内容#替换为的内容#修饰符
[email protected]要查找的内容@替换为的内容@修饰符

其中,
**要查找的内容**:可使用正则表达式;
**替换为的内容**:不能使用正则表达式,但可以引用,例如: \1, \2的分组引用
> 如果“要查找的内容”部分在模式中使用分组符号,在“替换为的内容”中使用后向引用匹配到的内容;
如果“要查找的内容”部分在模式中没有使用分组符号,在“替换为的内容”中则直接引用查找模式匹配到的全部文本,要使用&符号;

**修饰符**:

修饰符 | 含义
——— | ——-
i | 查找时忽略大小写
g | 全局替换,意味着一行中如果匹配到多次,则均替换;

**示例**:

表现形式 | 含义
———— | ——
:%s/this/This/ | 从全局搜索this字串,并把每一行中第一次匹配到的字串替换为This
:%s/this/This/g | 从全局搜索this字串,并把每一个匹配到的字串都替换为This
:%s/this/This/gi | 从全局搜索this字串,并且在查找时忽略字符大小写,并把每一个匹配到的字串都替换为This
:%s/\\/cgroup\\/systemd/\\/etc\\/sysconfig/g | 从全局查找/cgroup/systemd字串,并把每一个匹配到的字串都替换为/etc/sysconfig,其中的代表路径的”/”需要加转义符”\\”
:%[email protected]/cgroup/[email protected]/etc/[email protected] | 从全局查找/cgroup/systemd字串,并把每一个匹配到的字串都替换为/etc/sysconfig
:%[email protected]\\<t\\([[:alpha:]]\\+\\)\\>@T\\[email protected] | 从全局搜索以t开头的单词,并把所有匹配到的单词的t全部替换为T
:%[email protected]\\t[[:alpha:]]\\+\\>@&[email protected] | 从全局搜索以t开头的单词,并把所有匹配到的单词后全部加上er

**练习题**:
(1) 复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;
“`
~]# cp /etc/grub2.cfg /tmp/
~]# vim /tmp/grub2.cfg
末行模式下执行
方法1: :%[email protected]^[[:space:]]\+\([^[:space:]]\+\)@\[email protected]
方法2: :%[email protected]^[[:space:]]\[email protected]@g
“`
(2) 复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#号。
“`
~]# cp /etc/rc.d/init.d/functions /tmp/
~]# vim /tmp/functions
末行模式下执行 :%[email protected]^[[:space:]]@#&@g
“`
(3) 为/tmp/grub2.cfg文件的前三行的行首加#号
“`
~]# vim /tmp/grub2.cfg
在末行模式下执行 :1,[email protected]*@#&@
“`
(4) 将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有的gpgcheck=0替换为gpgcheck=1
“`
~]# vim /etc/yum.repos.d/CentOS-Base.repo
末行模式下执行
方法1:
:%s/enabled=0/enabled=1/g
:%s/gpgcheck=0/gpgcheck=1/g
方法2:
:%[email protected]\(enabled\|gpgcheck\)[email protected]\[email protected]
“`
## 十、vim的多文件功能
### 1. 多文件
**格式**:vim FILE1 FILE2 …
**功能**:
(1) 一个vim命令编辑多个文件;
(2) 一次只能编辑一个;
(3) 需要进行向前或向后切换;
(4) 能够实现跨文件复制;

切换命令 | 含义
———— | ——
prev | 向前切换一个文件
next | 向后切换一个文件
first | 切换至第一个
last | 切换至最后一个

**退出所有文件操作命令**

退出命令 | 含义
———— | —–
:wqall | 保存所有文件并退出
:wall | 保存所有文件
:qall | 退出所有文件
### 2. 多窗口
在使用vim打开文件时,可以通过选项设置同时打开多个窗口。

选项 | 含义
—— | ——
-o | 水平分割窗口
-O | 垂直分割窗口

切换命令(Ctrl+w)
同时按住Ctrl+w后松开,然后按方向键进行切换,详情如下:

命令 | 含义
—— | ——
↑ | 向上切换文件
↓ | 向下切换文件
← | 向左切换文件
→ | 向右切换文件
s | 单个文件再做水平切割,也适用于单文件修改
v | 单个文件再做垂直切割,也适用于单文件修改

## 十一、定制vim的工作特性
在末行模式下做得设定,仅对当前vim进程有效;想要永久有效,要进行配置文件修改。
永久有效的配置文件:
(1) 全局的: /etc/vimrc
(2) 个人的: ~/.vimrc

命令 | 含义
—— | ——
:set number或:set nu | 显示行号
:set nonumber或:set nonu | 取消显示行号
:set showmatch或:set sm | 括号匹配高亮显示,光标移动到括号的一边,另一边会高亮显示
:set noshowmatch或:set nosm | 取消高亮显示
:set ai | | 启用自动缩进功能
:set noai | 取消自动缩进功能
:set hlsearch | 启用高亮搜索
:set nohlsearch | 取消高亮搜索
:syntax on | 启用语法高亮
:syntax off | 禁用语法高亮
:set ic | 启用忽略大小写功能
:set noic | 禁用忽略大小写功能

获取帮助:
:help [subject]

设置vim中,Tab键缩进空格数:
修改~/.vimrc或/etc/vimrc文件,加入:
set ts=4

本文由马哥Linux运维学员原创,首发于178linux.com

时间: 2024-10-13 08:14:22

最全文本编辑器VIM使用指南的相关文章

Linux 第八天: (08月09日) Linux文本编辑器vim

sed 行编辑器 stream EDitor sed -n 不输出模式空间内容的自动打印sed -e 多点编辑sed -f /PATH/TO/SCRIPTFILEsed -i 原处编辑 script单地址 # 指定的行/pattern/ 所能匹配到底每一行 地址范围#,##,+#/pat1/,/pat2/#,/pat1/~ 步进1~2 奇数行2~2 偶数行 sed d 删除模式空间匹配的行sed p 显示模式空间中的内容sed a \text 在行后追加文件, 支持\n多行追加sed i \te

[Linux学习笔记] Linux文本编辑器Vim/Vi

文本编辑器Vim: Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器. 它的作用是建立.编辑.显示文本文件. Vim/Vi没有菜单,只有命令. 插入命令 命令 作用 a 在光标后附加文本 A 在本行行末附加文本 i 在光标前插入文本 I 在本行开始插入文本 o 在光标下插入新行 O 在光标上插入新行 定位命令 命令 作用 h 方向左键. 左移一个字符 j 方向下键. 下移一行 k 方向上键. 上移一行 l 方向右键. 右移一个字符 $ 移至行尾 0 移至行

Linux系统文本编辑器vim指令大全

本文适合Vim新手,既可阅读入门 相关在线资料http://baike.baidu.com/subview/113188/9338173.htm?fr=aladdin vim的使用之汇总   vimtutor (在线学习) 功能最强在的编辑器--vim vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件.当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻.游刃有余,

linux 文本编辑器Vim/Vi详细介绍

二:文本编辑器Vim/Vi(早起叫Vi后期升级版Vim) vim/vi是一个功能强大的全屏幕文本编辑器,是linux/unix上最常用的文本编辑器, 它的作用是建立.编辑.显示文本文件. vim/vi 没有菜单,只有命令 ----官方:www.vim.org 三种模式: vi filename 命令模式 按i.a.o 插入模式 :set nu 编辑模式(设定行号,这种就是编辑模式下,:号开头) 常用命令: 一组:插入命令 命令 作用 a 在光标后附加文本 A 在本行行末附加文本 i 在光标前插入

Linux系列教程(十)——Linux文本编辑器vim

通过前面几篇博客我们终于结束了Linux常用命令的介绍,Linux常用命令主要包括以下: ①.Linux文件和目录处理命令 ②.Linux链接命令和权限管理命令 ③.Linux文件搜索命令 ④.Linux帮助和用户管理命令 ⑤.Linux压缩和解压缩命令 ⑥.Linux网络和关机重启命令 学习命令,我们不需要记住每一条命令的详细语法格式,学完之后我们只需要知道某个命令能干什么.这样我们在实际应用中,遇到需要实现某个功能,我们脑海只要能想起来适用于某个命令就行,至于详细格式我们可以通过查资料.当我

LINUX文件内容处理及文本编辑器vim

Linux基本操作命令 echo命令 echo命令: 把echo后面的内容显示到屏幕. -n 显示内容的时候不显示每行结尾的回车 echo 内容 >> 文件名 表示把内容加到一个文件的末尾 echo 内容 > 文件名 表示把内容覆盖原先的文件内容 cat命令 cat 常用选项 -b 显示行编号(忽略空行) -n 显示所有行编号(包括空格) cat >>文件<<EOF cat >文件<<EOF >表示写入新内容即使之前有内容也会覆盖 >

文本编辑器VIM/VI

vim/vi  功能强大全屏文本编辑器.主要是建立,编辑,显示文本. www.vim.org  构建shell脚本 :set number 使文件出现行号 a 光标后附件文件     i在光标前插入文本       o回到光标下插入新行 A在本行末附件文件   I在本行开始插入文本    O在光标上插入新行 命令模式: h←   j↓   k↑    i→    $行尾   0移至行首   H屏上方   M屏中方   L屏下端 定位 :set  number 设置行号 :set nonumber

Linux之文本编辑器VIM

vim Vim是一个功能强大的全屏文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件. 注:vim没有菜单,只有命令 vi [文件名]  进入命令模式 wq 退出命令模式 输入 i a o 由命令模式进入插入模式 按 ESC 退出插入模式,进入命令模式 输入 :由命令模式进入编辑模式 输入命令以回车结束运行,进入命令模式 插入命令 命令 作用 a 在光标所在字符后插入 A 在光标所在行尾插入 i 在光标所在字符前插入 I 在光标所在行行首插入 o 在光标下

Linux文本编辑器Vim配置

Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性. VIM是纯粹的自由软件. 因此一个配置好的vim使用起来肯定是更加得心应手的. 那问题就来了,到底该怎么配置呢??? 首先打开Linux下的端口(terminal),切换到root root切换命令:$ su,然后输入密码 接着输入命令:$ cd /etc,在该目录下找到文件vimrc,在里面进行编辑. 如果没有的话就需要自己创建一个相同名字的文件了. 以下是我进行的主要设置,随着学习的深入在进