Linux 之旅 7:vim 程序编辑器

本文介绍了Linux上强大的文本编辑器vim,包括它的历史与功能,以及与vi的区别。通过实例演示了vim的三种工作模式:指令模式、输入模式和命令行模式,以及如何在这些模式间切换。此外,文章还讲解了vim的常用操作,如打开文件、编辑、保存与退出,以及一些高级特性,如区块选择、多文件编辑和多窗口功能。最后,提到了vim的编码、换行符和编码转换问题,强调了学习vim的重要性和实用性。
摘要由CSDN通过智能技术生成

Linux 之旅 7:vim 程序编辑器

Linux上最常用的文本编辑器是vim,但老实说也很难学,光一个编辑器使用指南就可以写一篇文章,在现在这个软件越来越易用的年代也算是另类了。

尤其是我们还有很多替代方式,比如nano,或者干脆使用图形化的编辑器,比如VSCode的Linux版本,甚至还可以用Windows上的IDE远程连接后进行编辑(以前工作的时候我就是用Zend远程连接修改和debug测试机上的程序的),这都很方便,而且还是你熟悉的工具。

但是vim依然有其存在的价值,比如说因为是命令行程序,可以在各种ssh连接工具上直接调用,而且不依赖于XWindow桌面,像一些出于安全或者性能方面考虑而不安装XWindow的Linux主机,除了用IDE远程连接外就只能使用nano或者vim这样的工具了。

vim的功能显然要远远超过nano

下面介绍vim的使用方式。

vivim

vim是在vi的基础上开发的,比vi更强大,可以看作是vi的增强版,具体来说,主要是增加了编程相关的支持,对于不同的程序语言提供相应的语义颜色显式的支持,这点对开发者非常重要,对于运维来说,同样支持shell脚本的颜色显式。

[icexmoon@xyz ~]$ whereis vi vim
vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz /usr/share/man/man1p/vi.1p.gz
vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz
[icexmoon@xyz ~]$ alias vi
alias vi='vim'

虽然CentOS7上同时安装了vivim,但是可以看到存在一个命令别名vi,实质上是调用vim,也就是说默认情况下在bash中执行vi都是使用的vim,如果要调用真正的vi,需要这样:

[icexmoon@xyz tmp]$ \vi test.py
[icexmoon@xyz tmp]$ /bin/vi test.py

使用vi打开一个测试用的python代码,效果是这样的:

image-20210813134026767

使用vim打开,效果这样:

image-20210813134152917

区别还是很明显的。

为什么要学习vim

除了上边说明的vim存在的意义以外,vim还是很多shell程序调用的默认编辑器,也就是说如果某些应用执行的时候需要编辑一个文本文件,就会直接调用vim来打开该文件,然后让用户编辑,这种情况下你就必须会用vim了,也无法用其它方式去替代。

vi的使用

这里先介绍vi的用法,最后再介绍vim增强的功能,因为它们都是一脉相承,除了增强的功能以外用法都是一样的。

vi最难令初学者理解的地方在于,作为一个文本编辑器,居然还分为三种工作模式,而且一开始打开后并非处于文本编辑模式,你不能随意移动光标编辑文本,这就很让人费解了,我第一次打开的时候完全是莫名其妙。

具体来说是分为以下三种模式:

  • 指令模式(command mode):

    指令模式也是一开始进入程序后的默认模式,在这个模式下可以直接使用各种快捷键对文本进行直接修改,也可以输入一些特殊字符进入命令模式。

  • 输入模式(insert mode):

    在指令模式下输入特殊字符(比如i),后可以进入输入模式,或者叫做编辑模式。

    在这个模式下我们可以像使用普通的文本编辑器那样移动光标,进行删除,或者输入文字。按ESC可以退出到指令模式。

  • 命令行模式(command-line mode):

    在指令模式下输入/?:可以进入命令行模式,前两个符号用于检索,最后一个用于输入命令。

    在命令行下可以输入字符串进行检索,或者是使用各种命令实现各种功能,比如修改vi的相关设置,或者对修改内容进行写入,亦或者退出应用。

    ESC可以返回到指令模式。

三种模式的转换可以用下图表示:

image-20210813123746395

(图片来自鸟哥的私房菜)

简易执行范例

打开文件

使用vi filename可以打开一个文件,如果文件不存在,会新建,比如:

image-20210813124405867

可以看到,左下角是文件名,以及[New File],表示这是一个新文件。

image-20210813124520449

这是一个已经存在的文件,可以看到左下角的信息,表示文件是test.py,只有1行数据,包含23个字符。

进入输入模式

在指令模式下按下i就可以进入输入模式:

image-20210813134615485

此时左下角会出现为INSERT字样,并且可以在该模式下移动光标并输入字符。

返回指令模式

这个简单,在输入模式下按ESC即可返回指令模式。

image-20210813134804084

进入命令行模式

输入:即可进入命令行模式:

image-20210813135000951

此时光标会出现在左下方的:字符之后,然后你就可以在这里输入相关命令并且按下Enter执行,这里我们输入wq以保存修改并退出。

image-20210813135142491

使用cat查看修改结果:

[icexmoon@xyz tmp]$ cat test.py
print("hellow wolrd!")
print("end")

这里wq是最长用的保存并退出,如果不想保存,想直接退出,可以q,但如果内容有变更,是不允许你这样离开的,需要使用q!强制退出。如果文件没有写权限,同样是无法执行w命令的,此时如果你是该文件的拥有者或者root用户,可以使用w!强制写入。类似的wq!是强制写入后退出。

以上就是最简单的vi操作流程,当然vi的功能远远不止如此,这在后边详细说明。

按键说明

这里将vi中可以使用的按键和命令按模式划分为三部分:

为了更好地进行vim相关测试,这里下载了我的一个项目以提供文本文件,不过需要先安装工具gitsudo yum install git,如果无法安装的可能还需要替换CentOS的源为国内的源:CentOS配置本地yum源/阿里云yum源/163yuan源,并配置yum源的优先级,当然这并不是必须的,你可以上传自己喜欢的文本到虚拟机中进行测试。

指令模式下可以使用的按键
  • 下边按键中的d>n>G之类的表示依次输入某个按键,比如这个就表示先输入d,再输入一个数字,最后再输入G
  • 下边按键中的未被代码模块包裹的n字母表示输入任意一个数字,比如20。
  • +表示组合键。
按键 作用
h方向键左 向左移动光标
j方向键下 向下移动光标
k方向键上 向上移动光标
l
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值