文章目录(Table of Contents)
简介
在使用 Linux 的时候,最经常需要做的就是修改和编辑一些文件。于是本文会介绍一个常用的 Linux 下编辑文本的工具,即 vim 的使用,主要会分为以下的内容(如果想使用桌面版的文字编辑工具,也可以尝试使用 gedit,这个就和记事本的使用是类似的):
vim的模式介绍;vim中光标的移动;vim中的删除操作;vim中的撤销与重做;vim中的复制粘贴和剪切;vim中的快速查找;vim中的查找替换;vim中的命令行模式;vim中的文件保存与退出;vim中的配置;
Vim 编辑器的使用
对于所有的 Linux 发行版来说,都内置了 vi 编辑器,而 vim 是一款高级文本编辑器,除了支持 vi 编辑器的功能之外,还提供了更丰富的功能。
借用一些 vim 官方的说法。 vim 是一种高可配置的文本编辑器,通常被称为 programmer's editor,即程序员的编辑器,但是不仅仅是程序员,vim 可以适用于各种文字编辑。
Vim 的模式
vim 是一种模式编辑器。按照官方对于模式的分类,这里我们介绍三种基本的模式分别是普通模式(normal),插入模式(insert)和命令行模式(command line)。在普通模式下,键入的字符会被当作命令,而在插入模式下,键入的字符会被当作文本。
对于刚刚启动的 vim,处于 normal 普通模式下(我们在终端输入 vim 来启动 vim )。
如果需要进到插入模式,我们可以键入 i 命令(从「普通模式」切换到「插入模式」),切换到插入模式下。在插入模式下,可以输入文本内容,并且底部会显示 insert(中文版本会显示「插入」,下图中的波浪线表示不存在的行):
如果要切换到「命令行模式」,需要先切换到「普通模式」。接着在普通模式下输入 :( 冒号),或者 / 或 ? ,在编辑器界面的最后一行(不是文本内容的最后一行),就会出现一个输入的冒号或/ 或 ?,在此,我们可以输入一些命令,例如下图所示,我们在标准模式下输入下图的命令:
此时就会显示文本内容的行号:
光标移动
在 vim 中,我们最常用的就是使用方向键来移动光标。但是有的时候我们需要移动到指定的行,这个时候就需要使用一些快捷键:
- 移动到行首与行尾
HOME键,移动到行首;END键,移动到行尾;^符号,普通模式下,该符号会移动到行首;$符号,普通模式下,该符号会移动到行尾;
- 移动到指定的行
gg普通模式下,移动到文件的第一行;G移动到文件的最后一行;nG这里n代表跳转的行号(或是使用:n来跳转到指定的行);
删除操作
通常情况下,我们可以在 Insert 模式进行删除的操作。如果我们要删除多行,这样的方式就会略显麻烦,因此我们可以进入「普通模式」下通过命令进行操作:
dd命令,删除光标所在的一整行(删除一行);ndd命令,这里n代表的是一个正数,例如使用10dd,代表着从光标所在行开始计算,往下的 10 行内容都将被删除(删除多行);d$命令,从光标位置删除到行末(在一行,删除到行末);d^命令,从光标位置删除到行首(在一行,删除到行首);dG命令,从当前位置删除到文档的结尾(删除到最后一行);d$命令,从当前位置删除到文档首部(向上删除,删除至首行);
撤销与重做命令
上面我们介绍了删除的命令。如果我们不小心误操作,删除了不该删除的行,这个时候就需要撤销刚刚的操作。在「普通模式」下:
u命令,时间轴往左,相当于 office 中的撤销(朝左的撤销);ctrl + R命令,时间轴向右,相当于 office 中朝右的重做;
下图就是上面两个命令与 office 中的对应:
复制粘贴与剪切
这里的复制,粘贴和剪切操作都是在「普通模式」下使用:
- 普通模式中使用
y复制- 普通模式中,
yy复制游标所在的整行(3yy表示复制3行) - 普通模式中,
y^复制至行首,或y0。不含光标所在处字符。 - 普通模式中,
y$复制至行尾。含光标所在处字符。 - 普通模式中,
yw复制一个单词。 - 普通模式中,
y2w复制两个单词。 - 普通模式中,
yG复制至文本末。 - 普通模式中,
y1G复制至文本开头。
- 普通模式中,
- 普通模式中使用
p粘贴- 普通模式中,
p(小写)代表粘贴至光标后(下) - 普通模式中,
P(大写)代表粘贴至光标前(上)
- 普通模式中,
- 普通模式种使用
dd剪切- 前面讲得
dd删除命令其实就是剪切,这里不在赘述 ddp,快速实现光标所在行月它下面的行的交换
- 前面讲得
快速查找
对于搜索字符串的方式,我们可以通过 /string 和 ?string 的方式,这里的 string 代表需要搜索的字符串,/ 和 ? 分别代表向下和向上搜索。
对于有多个查询结果的时候,我们可以通过 n 或 N 来定位下一个或上一个查询结果(需要输入一个「回车」,接着通过 n 或 N 来定位)。
对于搜索单词时,我们设定忽略大小写以及取消设定:
- :set ignorecase
- :set noignorecase
例如当我们忽略大小写之后,输入 mathpretty 之后就可以匹配到上面大写的 Mathpretty 了:
查找与替换
:s(substitute)命令用来查找和替换字符串,语法如下:
- :{作用范围}s/{目标}/{替换}/{替换标志}
例如,:%s/Ma/ba/g 会在全局范围(%)查找 Ma 并替换为 ba,通过 g 标志指示整行替换(默认只会替换每行第一个)。
- 作用范围(替换搜索的范围)
- 默认表示当前行,
:s/foo/bar; %表示全文,:%s/foo/bar;- 指定开始行和结束行,
:5,12s/foo/bar; - 从当前行到接下来多少行,
:.,+2s/foo/bar;
- 默认表示当前行,
- 替换命令最后为可选的替换标志,除了前面提到的
g整行替换,还有一些其它的。i表示大小写不敏感,I表示大小写敏感(默认);c表示在执行每次替换前进行确认,其中y表示替换,n表示不替换,a表示替换所有,q表示退出(:%s/foo/bar/gc);
命令行模式
下面介绍一些在 vim 中常用的命令:
- # 不兼容 vi
- :set nocompatible
- # 兼容
- :set compatiable
- # 显示行号
- :set number
- # 不显示行号
- :set nonumber
- # 行号缩写的方式
- :set nu
- :set nonu
- # 显示行尾为 `$` ,显示制表符即 `<tab>` 键为`^I`
- :set list
- # 设置 tab 键的字符长为 4
- :set tabstop=4
- # 文件只读
- :set readonly
- # 设置编码格式
- :set encoding=utf-8
- # 设置文件编码
- :set fileencoding=utf-8
- # 设置 tab 为4个空格
- :set softtabstop=4
- # 生成备份文件
- :set backup
- # 不生成备份文件
- :set nobackup
文件的保存和退出
当我们完成对文件的修改或是创建之后,我们需要保存与退出。常见的保存退出方式如下:
w保存;w filename保存为 filename;q不保存退出;q!强制退出,使用!强制执行;wq保存退出(这个会比较常用);wq!强制保存退出;wq filename保存为 filename,并退出;
vim 的配置
这里简单介绍 vim 的配置。vim 的配置文件是 vimrc 文件。我们可以通过打开 vim 编辑器,使用如下命令来查看,:scriptname ,会列出 vim 加载的脚本。
如果我们想要自定义一些 vim 的配置,之需要在用户的根目录下创建 .vimrc 文件,写入相应的配置项。就可以使配置生效。如下,给出一个 vimrc 的示例:
- " 设置自动缩进
- set autoindent
- " 设置显示光标位置
- set ruler
- " 显示行号
- set number
上面只有三行的设置,当再次打开 vim 的时候,就可以看到区别。此时就会自动显示行号:
- 微信公众号
- 关注微信公众号
-
- QQ群
- 我们的QQ群号
-









评论