vim编辑器的常用技巧

vim编辑器的常用技巧

前言

我们在使用 Windows 系统时,如果想要更改一些文件的内容,我们通常会以记事本格式(即 txt 格式)打开文件,往里面写入或修改一些内容,记事本就是我们常用的一款文件编辑器。同样地,在 Linux 系统下,我们也需要一款文本编辑器来编辑文件的内容。

Linux 系统在命令行模式下的文本编辑器是非常多的,比如 nano、pico、vim等。这其中最重要的,最需要掌握的,就是 vim 编辑器了

在 Linux 系统中,有一个老式的编辑器 vi,功能很齐全,是一款较为好用的文本编辑工具,大家都喜欢用。而 vim 是 vi 的高级版本,包含了 vi 所有功能的同时,vim里面又加入了很多额外的功能,比如支持正则表达式,多文件编辑等,vim更像是一款程序开发工具,已经获得了大家的一致好评。

列举一下学习 vi/vim 的重要性:

  1. 所有的 UNIX-like 系统基本都会内置 vi 文本编辑器,而别的文本编辑器则不一定会有
  2. 很多软件的编辑接口都会主动调用 vi
  3. vim具有程序编辑的功能,可以主动识别对应语法,并以字体颜色作为区分,方便判断语法是否正确,纠正程序书写。
  4. 编辑速度很快

注意,现在的 Linux 系统中,已经默认用 vim 替代 vi 了,所以在命令行中直接输入 vi 或者 vim 的效果是一样的。

Vi的使用

vi的三种模式

基本上 vi 共分为三种模式:

  • 一般命令模式(command node)
  • 编辑模式 (insert mode)
  • 命令行模式(command-line mode)

一般命令模式也被称为普通模式,是默认进入的模式,用 vi 打开一个文件就进入一般命令模式了。这里注意,如果文件存在,则vi会打开对应文件;如果文件不存在,vi会新建一个文件再打开,所以打开文件时一定要输入正确的文件名

vi filename     //比如 vi test.txt

在一般命令模式下,可以进行删除、复制、粘贴等操作,比如,光标移到要删除的那行,输入 dd ,删除该行。但是不允许编辑文件内容。想要进行编辑,得进入编辑模式才可以。

如下图所示,已经进入一般命令模式。

1

在一般命令模式下,输入 ioar (不论大小写)其中任何一个字母,都会进入编辑模式。前三个字母代表的是 insert,最后一个 r 代表的是 replace。

注意,要看到左下角出现【INSERT】或【REPLACE】的字样,才真正进入了编辑模式,在编辑模式下可以任意编辑文本内容。如果要退出编辑模式,按下【Esc】键可即退回到一般命令模式。

2

在一般命令模式下,输入 :/? 其中任何一个符号,就可以把光标移动到最下面那一行,进入命令行模式。

在命令行模式中,可以进行数据的查找,读取、保存、批量替换字符串、退出vi、显示行号等操作。同样地,按下【Esc】键即可退回到一般命令模式。

3

这里注意一点,一般命令模式是默认进入的模式,但是要退出 vi ,只能通过命令行模式退出

总结一下三个模式之间的关系,一般命令模式可以和其他两个模式之间相互切换,但是编辑模式与命令行模式不可以相互切换。

mode

用 vim 来编辑文件最常用的一种方式是,用 vim 文件名 的方式打开文件,按 i 进入编辑模式对文件进行编辑,编辑完成后按 【Esc】 键退回到一般命令模式,按下 : 进入命令行模式,输入 wq 并回车,文件保存成功

常用按键说明

下面的表格列举了一些常用按键(区分大小写),在一般命令模式下,学会这些按键使用,可以帮助自己提升效率,事半功倍。

按键移动光标
h 或 左箭头 ←光标向左移动
j 或 下箭头 ↓光标向下移动
k 或 右箭头 →光标向右移动
l 或 上箭头 ↑光标向上移动
ctrl + f屏幕向下移动一页
ctrl + b屏幕向上移动一页
n<space>n表示数字,按下数字后再按空格键,光标会向右移动 n 个字符的位置
n<enter>n表示数字,按下数字后再按回车键,光标会向下移动 n 行
0数字0,光标会移动到这一行的第一个位置
$光标移动到这一行最后一个位置
gg光标移动到文件的第一行,相当于 1G
G光标移动到文件的最后一行
nGn表示数字,光标移动到文件的第 n 行
命令查找与替换
/word从光标位置开始,向下查找一个名为 word 的字符串
?word从光标位置开始,向上查找一个名为 word 的字符串
nn是英文按键,重复前一个查找的操作
:n1,n2s/word1/word2/gn1、n2为数字,在第 n1 与 n2 行之间寻找 word1 这个字符串,
并将其全部替换为 word2(注意前面有冒号)
:1,$s/word1/word2/g在第一行与最后一行之间寻找 word1 这个字符串,并将其全部替换为 word2
:1,$s/word1/word2/gc加了一个 c,在替换前会询问用户是否替换

如果不小心替换错了,可以按 u 撤销上一步操作

按键删除、复制与粘贴
x/X以光标位置为起点,x表示向后删除一个字符(相当于Delete)
X表示向前删除一个字符(相当于Backspace)
nxn为数字,连续向后删除n个字符。nX 则连续向前删除 n 个字符
dd剪切光标所在的那一行数据
nddn为数字,剪切包含光标所在行向下的 n 行数据。nyy同理
d$剪切光标所在处到该行的最后一个字符。y$同理
yy复制光标所在的那一行数据
p/Pp将一复制的数据在光标下一行粘贴,P在上一行粘贴
J将光标所在行与下一行数据结合成同一行
u撤销上一步操作
.小数点,重复上一步操作

这里注意,小数点是不能重复撤销操作的。举个例子,有一行数据 “Linux is funny”,光标在 x 字符上,按下 d$,本行数据变为 “Linu”,按下 u 进行撤销,数据恢复为 “Linux is funny”,此时按下小数点 . 会重复进行 d$ 操作,而不是撤销,数据又变成了 “Linu”。

命令保存、退出
:w将编辑的文件进行保存
:w!若文件属性是只读属性,如果用户权限足够,可以进行强制保存
:q退出 vi/vim
:q!强制退出
:wq保存并退出,:wq! 即为强制保存并退出
ZZ文件没有修改则直接退出,文件修改了则保存再退出
:! command暂时退出 vi/vim 到命令行模式下执行 command的显示结果(注意空格)
:set nu显示行号
:set nonu不显示行号

例如,:! ls ~ 这条命令,可以查看当前 home 目录下面以 ls 输出的文件信息,按任意键可以回到 vi/vim 中。

Vim额外功能

多文件编辑

我们用 vi 打开一个文件的时候它是占满全屏的,我们看不到别的文件,也只能编辑当前文件。vim支持我们进行多个文件同时编辑,可以来回切换而不是频繁退出。

命令多文件编辑
:n编辑下一个文件
:N编辑上一个文件
:files列出目前这个 vim 开启的所有文件

举个例子。首先,我们先一次性打开两个文件,系统会默认显示第一个文件

vim test1.txt test2.txt

输入 :files 即可看到我们同时打开了两个文件,%a表示当前正在查看的是 test1.txt 文件。

4

按任意键继续,输入 :n 即可切换到下一个文件进行编辑。

注意,必须是用 vim 同时打开多个文件才行

多窗口编辑

如果想需要同时对照多个文件进行编辑,多文件下就得反复横跳,对照的效率大大降低,感觉比较麻烦。幸好 vim 为我们提供了多窗口编辑的功能,有了多窗口,就可以方便地进行文件的对照和编辑了。

相比之下,多窗口就比多文件更灵活、更好用,而且没有了多文件必须同时打开的限制。

命令多窗口编辑
:sp {filename}打开一个新窗口,如果有 filename,则在新窗口打开新文件;
如果仅输入了 :sp 则将当前文件再用新窗口打开一次
ctrl + w + j
ctrl + w +↓
先按下 ctrl 键不放,再按下 w 键,松开所有按键,再按下 j 或方向键,光标移动到下面的窗口
ctrl + w + k
ctrl+ w + ↑
同理,光标移动到上面的窗口
:q退出当前窗口,:wq 同理使用

比如,我们先用 vim 打开刚才的 test1.txt 文件,再通过命令行输入 :sp test2.txt 即可使用多窗口,对照更方便,不易出错。

2

想退出哪个窗口,可以先将光标切换到对应窗口,按 Esc 键进入一般命令模式,再输入 :q 退出。

参考文章

鸟哥的Linux私房菜——基础学习篇(第四版)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值