文章目录(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群号
评论