5.4 Linux Vim基本操作
《Vim三种工作模式》一节给大家详细介绍了 Vim 的 3 种工作模式,本节来学习如何使用 Vim 编辑文件。
首先学习如何使用 Vim 打开文件。
Vim 打开文件
使用 Vim 打开文件很简单,例如在命令行模式下打开一个自己编写的文件 /test/vi.test,打开方法如下:
[root@itxdl ~]# vim /test/vi.test
刚打开文件时 Vim 处于命令模式,此时文件的下方会显示文件的一些信息,包括文件的总行数和字符数,以及当前光标所在的位置等,此时可以使用插入命令进入输入模式对文件进行编辑,如图 1 所示。

图 1 Vim 打开文件
除此之外,我们还可以利用下表中打开文件的命令格式,针对特定情形使用适当的打开方式,可以大大提高我们的效率。
| Vi 使用的选项 | 说 明 |
|---|---|
| vim filename | 打开或新建一个文件,并将光标置于第一行的首部 |
| vim -r filename | 恢复上次 vim 打开时崩溃的文件 |
| vim -R filename | 把指定的文件以只读方式放入 Vim 编辑器中 |
| vim + filename | 打开文件,并将光标置于最后一行的首部 |
| vi +n filename | 打开文件,并将光标置于第 n 行的首部 |
| vi +/pattern filename | 打幵文件,并将光标置于第一个与 pattern 匹配的位置 |
| vi -c command filename | 在对文件进行编辑前,先执行指定的命令 |
使用 Vim 进行编辑
同样,Vim 提供了大量的编辑快捷键,主要可分为以下几类。
Vim 插入文本
从命令模式进入输入模式进行编辑,可以按下 I、i、O、o、A、a 等键来完成,使用不同的键,光标所处的位置不同,如表 3 所示。
| 快捷键 | 功能描述 |
|---|---|
| i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
| I | 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令 |
| o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
| O(大写) | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
| a | 在当前光标所在位置之后插入随后输入的文本 |
| A | 在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行 a 命令 |
Vim 查找文本
| 快捷键 | 功能描述 |
|---|---|
| /abc | 从光标所在位置向前查找字符串 abc |
| /^abc | 查找以 abc 为行首的行 |
| /abc$ | 查找以 abc 为行尾的行 |
| ?abc | 从光标所在为主向后查找字符串 abc |
| n | 向同一方向重复上次的查找指令 |
| N | 向相反方向重复上次的查找指定 |
例如,在 /etc/passwd.vi 文件中查找字符串 "root",则运行命令如图 5 所示。

图 5 使用 Vim 进行查找
如果在文件中并没有找到所要查找的字符串,则在文件底部会出现 "Pattern not found" 提示,如图 6 所示。

图 6 未查找到指定字符串的提示
在查找过程中需要注意的是,要查找的字符串是严格区分大小写的,如查找 "shenchao" 和 "ShenChao" 会得到不同的结果。
如果想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"。
如果在字符串中出现特殊符号,则需要加上转义字符 ""。常见的特殊符号有 \、*、?、$ 等。如果出现这些字符,例如,要查找字符串 "10$",则需要在命令模式中输入 "/10$"。
Vim 替换文本
| 快捷键 | 功能描述 |
|---|---|
| r | 替换光标所在位置的字符 |
| R | 从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束 |
| /a1/a2/g | 将当前光标所在行中的所有 a1 用 a2 替换 |
| :n1,n2s/a1/a2/g | 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换 |
| :g/a1/a2/g | 将文件中所有的 a1 都用 a2 替换 |
例如,要将某文件中所有的 "root" 替换为 "liudehua",则有两种输入命令,分别为:
:1, $s/root/liudehua/g
或
:%s/root/liudehua/g
上述命令是在编辑模式下操作的,表示的是从第一行到最后一行,即全文查找 "root",然后替换成 "liudehua"。
如果刚才的命令变成 :10,20 s/root/liudehua/g,则只替换从第 10 行到第 20 行的 "root"。
Vim删除文本
| 快捷键 | 功能描述 |
|---|---|
| x | 删除光标所在位置的字符 |
| dd | 删除光标所在行 |
| ndd | 删除当前行(包括此行)后 n 行文本 |
| dG | 删除光标所在行一直到文件末尾的所有内容 |
| D | 删除光标位置到行尾的内容 |
| :a1,a2d | 函数从 a1 行到 a2 行的文本内容 |
注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就可以将刚才删除的内容又粘贴到此处。
Vim复制和粘贴文本
| 快捷键 | 功能描述 |
|---|---|
| p | 将剪贴板中的内容粘贴到光标后 |
| P(大写) | 将剪贴板中的内容粘贴到光标前 |
| y | 复制已选中的文本到剪贴板 |
| yy | 将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行 |
| yw | 将光标位置的单词复制到剪贴板 |
Vim其他常用快捷键
某些情况下,可能需要把两行进行连接。比如说,下面的文件中有两行文本,现在需要将其合并成一行(实际上就是将两行间的换行符去掉)。可以直接在命令模式中按下 "J" 键,按下前后如图 10 所示。

图 10 按下 "J" 键前后
如果不小心误删除了文件内容,则可以通过 "u" 键来撤销刚才执行的命令。如果要撤销刚才的多次操作,可以多按几次 "u" 键。
Vim 保存退出文本
Vim 的保存和退出是在编辑模式中进行的,其常用命令如下表所示。
| 命令 | 功能描述 |
|---|---|
| :wq | 保存并退出 Vim 编辑器 |
| :wq! | 保存并强制退出 Vim 编辑器 |
| :q | 不保存就退出 Vim 编辑器 |
| :q! | 不保存,且强制退出 Vim 编辑器 |
| :w | 保存但是不退出 Vim 编辑器 |
| :w! | 强制保存文本 |
| :w filename | 另存到 filename 文件 |
| x! | 保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令 |
| ZZ | 直接退出 Vim 编辑器 |
需要注意的是,"w!" 和 "wq!" 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly,如图 12 所示),但如果你是文件的所有者或者 root 用户,就可以强制执行。

图 12 只读文件
5.4 Linux Vim基本操作的更多相关文章
- linux vim 基本操作
(一定要在英文输入法的状态下才有效)vi:实际上linux 上的 vi 不是真正的 vi,而是 vim;纯的 vi只在某些 unix 系统上还存在纯 的vi里面不支持退格键盘了,当按退格键盘以后,不是 ...
- linux vim基本操作
vim 是一款功能强大的文本编辑器, 默认有三种模式: 命令模式, 插入模式, 编辑模式, 使用# vim file 打开一个文件时,默认进入命令模式, 不同模式直接的切换如下 a. 命令模式切 ...
- linux的基本操作与常见命令
linux的基本操作与常见命令: jdk的安装: 步骤:(特别注意:虚拟机安装的一般是32位的操作系统,jdk也必须使用32位的) 查看虚拟机版本:sudo uname --m i686 //表示是3 ...
- 经典 Linux & VIM 教程
简明 Vim 练级攻略: http://coolshell.cn/articles/5426.html VIM快捷键: http://coolshell.cn/wp-content/uploads/2 ...
- linux VIM基本命令
linux VIM命令: vim 在命令行中输入vim,进入vim编辑器 Esc 退出i(插入)命令进行其他命令使用 :sh 进入shell命令行,运行完命令后ctrl+d退出又一次进入vim编辑继续 ...
- linux vim vi编辑时撤销输入操作
linux vim vi编辑时撤销输入操作 1,esc退出输入状态 2,u 撤销上次操作 3,ctrl+r 恢复撤销
- Vim 基本操作
Vim 基本操作 vim的模式 命令模式 2. 编辑模式 3. 尾行模式 编辑 i : 插入 光标所在位置 a : 插入 光标所在位置的下一个位置 o : 插入 光标所在位置的下一行插入新行 O : ...
- 【学习笔记】Linux基础(二):Linux的基本操作
二.Linux的基本操作 0.正确的开关机操作 开机和登陆: 安全起见,一般不使用最高权限的root账户登入系统,光立系统时再使用 登录时为login程序提供账户名和密码即可,密码不会被显示,登陆后显 ...
- linux的基本操作(文本编辑工具vim)
文本编辑工具vim * 命令模式:在一般模式下,输入”:”或者”/”即可进入命令模式.在该模式下,你可以搜索某个字符或者字符串,也可以保存.替换.退出.显示行号等等. 下面笔者教你如何在一个空白文档中 ...
- Linux下vim基本操作和清空文件内容的常用方法
以前都是用的很土的办法,大概有以下几种.1.直接删除,创建一个新的同名文件(这种方法的弊端是有可能这个文件带着权限或者是属性,那么你新建这个文件后有可能会导致权限不正确或者丢失属性).2.使用vim编 ...
随机推荐
- apisix-dashboard上添加自定义插件
参考:https://overstarry.vip/posts/apisix如何添加自定义插件/ 首先,我们需要向自定义的插件user-remote-auth添加到apisix中,对这块不清楚的同学, ...
- 关于centos7下所有指令失效
起因: 疑似宝塔更新修复后,本地所有环境变量集体不生效 问题环境 xshell环境下ssh连接 问题描述: - bash: xxx not fund - 环境变量无法保存 - 所有的保存方式都是临时生 ...
- python的命名风格(下划线篇)
一个下划线开头的代表模块私有 用from xxx import * 时python会自动屏蔽带下划线的东西,想要取消屏蔽可以用__all__方法,但不建议(不符合规范) 两个下划线开头的代表类私有
- draw.io 输入数学公式
首先我们要把数学排版功能打开: 然后输入数学公式: AsciiMath 公式由 ` 包裹,如:`a2+b2 = c^2` LaTeX 公式由 $$ 包裹,如:$$\sqrt{3×-1}+(1+x)^2 ...
- 详谈怎样配置微信小程序的分包以解决体积过大问题(转载)
一.文件结构和工具功能 1.小程序编译的文件结构 非常必要推荐了解小程序文件结构,对于稍大的项目,对于包的精简会起到柳暗花明又一村的效果 .众所周知,微信小程序分为"主包"和&qu ...
- 怎样在局域网中给网站作ssl认证,使其能以https协议访问(转)
如果要在局域网达到效果需要满足以下几点要求: 1. 证书由可信任的CA机构颁发 2. 证书在有效期 3. 访问地址和证书的认证地址一致 说明: 1. 需要在局域网内构建CA机构 2. 证书的有效期建议 ...
- vlan 技术
Ref: VLAN及Trunk,重要!看瑞哥如何讲的明明白白! 图文并茂VLAN以及Trunk详解,超级详细
- attention, transformers
这啥呀,慢慢啃 Attention 最初来源于 NLP 机器翻译的 Sequence to Sequence 模型,早先的encoder-decoder结构随着句子长度增加翻译性能会下降,因为模型记不 ...
- C#自定义控件—旋转按钮
C#用户控件之旋转按钮 按钮功能:手自动旋转,标签文本显示.点击二次弹框确认(源码在最后边): [制作方法] 用方法找到控件的中心坐标,画背景外环.内圆:再绘制矩形开关,进行角度旋转即可获得: [关键 ...
- Yarn 3.0 Plug'n'Play (PnP) 安装和迁移
前言 以前用 npm, 后来 yarn 火了就用 yarn. 后来 yarn 2.0 大改版, Angular 不支持就一直没用. 一直到去年的 Angular 13 才开始支持. 最近又开始写 An ...