Linux基础 简单地使用Vim编辑器

发布于 2022-07-02  97 次阅读


前言

上回简单地谈了一下Linux基础 社区支持,可能你已经有了一个Google帐户和Github帐户。

相信你已经被Github的开源、自由的社区氛围所折服,或者有一些不明觉厉的感觉。

甚至,机智的小伙伴说不定还Star了几个喜欢的Repositories。

在本回中,我们会简单地复习一下之前学过的Linux命令,然后学习一点简单的和Vim相关的知识。

最后先下载Linux基础 社区支持中的《鸟哥的Linux私房菜-基础学习篇》,找到Vim编辑器那一章简单地看一下,然后再来跟苯苯一起用一下尚未开光的Vim编辑器

测试环境

实际上,uname -a也是一个比较实用的命令,它可以简单地展示你主机的一些基本信息,主要是Linux内核及版本(5.4.0-42)、发行版(Ubuntu)、主机名(VM-12-8-ubuntu)、机器的架构(x86_64)等信息。

uname -a  # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

本博客一般都用Ubuntu或者Debian来进行测试。其它Linux发行版类似,少数命令不一样。

创建一个新文件

我们进入自己的home目录:

cd ~

创建一个新目录并进入目录:

mkdir -p ./tutorial/vim && cd ./tutorial/vim

创建一个新的.txt文件:

touch ./message.txt # 或者touch message.txt也是可以的

看看里面有什么内容:

cat ./message.txt

这里当然什么都不会输出啦,因为刚刚建立的嘛!

我们添加一条记录再cat一下:

echo 'I hate you!' > ./message.txt && cat ./message.txt

此时会输出:

I hate you!

多运行几次该命令:

echo 'I hate you!' > ./message.txt && cat ./message.txt

会发现输出都是一样的。这是因为>会用新内容覆盖旧内容。我们试试这个,这里多加了一个>号:

echo 'I hate you!' >> ./message.txt && cat ./message.txt

这时记录就会慢慢增加了。

OK,我们就用这个新创的文件学习一下Vim编辑器!

初步使用vim

先看看自己有没有安装vim了。

which vim

我会输出/usr/bin/vim,说明我已经成功安装了。你没有任何输出,可以运行:

sudo apt-get update && sudo apt-get install vim -y

OK,安装好Vim了!下面跟着操作一下。输入命令:

vim ./message.txt

这个过程中要善用之前说过的TAB键来补全文件名。

Enter后会进入一个页面:

image-20220418131702886

上面有几条I hate you!,这是我们自己加的。还有一些~,这说明这里还没有任何记录。

我们再看看下面。左边的"./message.txt"就是文件的位置。4L是4行。48C是指有48个字符吗?(这个没了解过)。右边那几个状态可以自己查查看,我也不太了解是啥意思 ,哈哈。

这个时候,小心地执行下面的操作:

键盘按下Shift + ;。此时画面变成:

image-20220418132229489

左边有个:的符号。输入q!:

image-20220418132301130

最后按下Enter。然后就回到了Shell的界面,好像什么也没发生。确实,刚刚你只是进去看了一下。q!的意思是,你不保存任何改动。

要注意,如果你发现有什么搞错了,不要紧张,直接按Ctrl+Z退出界面。如果你再次通过vim ./message.txt进去文件后发现有这个报错:

E325: ATTENTION
Found a swap file by the name "./.message.txt.swp"
          owned by: hwbtx   dated: Mon Apr 18 13:16:52 2022
         file name: ~hwbtx/tutorial/vim/message.txt
          modified: no
         user name: hwbtx   host name: VM-12-8-ubuntu
        process ID: 304453 (STILL RUNNING)
While opening file "./message.txt"
             dated: Mon Apr 18 13:12:07 2022

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r ./message.txt"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "./.message.txt.swp"
    to avoid this message.

Swap file "./.message.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:

你就按Q停止,然后删除一个系统缓存的临时文件./.message.txt.swp

rm ./.message.txt.swp

之后就可以正常地访问了。

这时我们执行一下清屏动作:

clear

然后按一下键盘上的。可以多按几下,是不是发现刚刚用过的命令出现了?这算是一个快捷的调用历史命令的方法吧,也很常用喔!

我们通过上下箭头调出刚刚的vim ./message.txt命令,然后Enter进入:

image-20220418131702886

现在我们要做一些不一样的操作。按键盘上的i,界面变化如下:

image-20220418132952613

左下角出现了INSERT字样,这时编辑器可以编辑文字了。可以用Enter换行,可以用删除键来删除一些文字。这里我示范一下将第一行的hate改为love

image-20220418133145334

然后,按ESC键:

image-20220418133219897

这时候,左下角的INSERT字样不见了。

再做下面的操作:Shift+;,这时左下角会出现:。再输入wq。如图所示:

image-20220418133408843

按下Enter键保存,然后就回到了熟悉的Shell界面。

这时我们检查一下刚刚的文件的内容:

cat ./message.txt

输出为:

I love you!
I hate you!
I hate you!
I hate you!

刚刚我们做的改动已经变化了!

如果你刚刚输入的是q!而不是wq,那么你修改的内容将不会被保存。

学到这里,你已经把日常Vim需要用到的70%的功能都学完了。我确实不是开玩笑的,有人用Linux多少年了,用于Vim基本上都只会wq或者q!,哈哈!

你刚刚可能会发现:整个修改的过程不需要用到鼠标!

其实啊,这也是当年开发Vim的主要原因之一,因为那时候鼠标还没有发明出来(~ ̄▽ ̄)~ 不过,就算是在今天IDE开花的年代,Vim都是一个非常优秀的IDE,也是很多极客喜欢的工具。你可以看看这个视频长长见识,看看这个Up主是怎么用Vim做各种骚操作的。不知你看完后有什么感想呢?是不是很酷,哈哈 :smirk:

其实我对Vim也没有太过深入的了解,也只是了解一些基本的命令。不过基本上可以满足大部分文本编辑的需求。Vim的天花板很高,所以学一下不亏的。

其它的文本编辑器还有vinano之类的,大家可以去试用一下。还有一些Shell终端软件也内置了文本编辑器,比如FinalShell、MobaXterm等,其实也蛮好用的。如果你想要编辑root文件,而你正在使用一个非root用户,用外置的文本编辑器可能会失效。甚至你保存的过程中可能会有乱码!

还是建议大家学一些新的东西。毕竟你用熟练Vim之后,也蛮简单的。技多不压身!

最后,我要将hate全部变成love!

调出用过的vim ./message.txt命令,进入vim编辑器的界面。输入:1,$s/hate/love/g,如图所示:

image-20220418134836370

按下Enter,全部都变成了I love you!,如图所示:

image-20220418134911998

左下角也表明3行中的3个目标被修改了。最后:wq保存即可。

查看一下内容:

cat ./message.txt

输出结果为:

I love you!
I love you!
I love you!
I love you!

更多基本命令可以参考《鸟哥的Linux私房菜-基础学习篇》,自己多多练习。相信很快就可以掌握!

小结

一定要多玩一下Vim,相信玩了1-2个小时,就可以比较熟练地使用了。Vim的使用会贯穿整个Linux学习历程。

当然,如果你实在受不了Vim的古怪,你也可以选择别的编辑器。你掌握好其中一种就行了!

这里还有一些学习Vim的资源,大家也可以按需食用:

更多Linux内容敬请期待吧!