【Linux上分之路】第九篇:Linux文本编辑器Vim:Vim工作模式

冲鸭

LinuxVim文本编辑器

前言

Linux一切皆文件,所有的内容都是以文件的形式存储的,在命令行下更改文件内容时,会使用到文本编辑器,在所有的Linux 发行版上面都会有的一个叫vi的文本编辑器,并且很多软件默认也是使用vi做为它们的编辑工具,Vim是高级版的vi

Vi与Vim

Vi编辑器是类Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文本中移动、插入、编辑和替换文本

Vim名称为"Vi improved",从名字就可以看出是由vi编辑器的改进升级和发展演变,Vim具有语法高亮显示、多视窗编辑、代码折叠、支持插件等功能,已经成为众多Linux发行版的标配

Vim的使用原因

几乎所有的Linux发行版都内嵌有Vim文本编辑器,但不一定会存在其他的编辑器

在使用Linux系统过程中,很多软件的编辑接口都会默认调用Vim编辑器,比如crontab、Visudo、edquota等命令

Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计

使用Vim文本编辑器会使得编辑速度更快

Vim三种工作模式

在使用Vim编辑器时,存在3种工作模式,分别是一般命令模式、编辑模式、命令行模式,一般命令模式可与编辑模式及命令行模式切换,但编辑模式与命令行模式不可互相切换

LinuxVim三种工作模式

Vim命令模式

当使用Vi或Vim编辑文件时,即vi 文件名进入文件,工作模式默认为命令模式,在这个模式下可以使用方向键(上下左右)来移动光标, 还可以对文件内容进行复制、粘贴、替换、删除等操作,但是无法编辑文件内容

Vim编辑模式

在一般命令模式下可以进行删除、复制、粘贴的操作,但无法编辑文件内容,通过按键(i、I、o、O、a、A、r、R)可以从命令模式进入到编辑模式,通常进入编辑模式的方式会在界面的左下角显示进入的方式,从编辑模式退回至命令模式只需要按键(Esc)

Vim命令行模式

在一般模式下,通过输入(:/ ?)中任意一个键则可以使光标移动到最下面那一行,为命令行模式,在此模式下可以提供查找数据、读取、保存、批量替换字符、退出文件、显示行号等操作

Vim按键说明

命令模式

一般命令模式可用的功能按键说明可以分为:光标移动、复制粘贴、查找替换

光标移动
按键说明移动光标方法
h或左箭头键(←)光标向左移动一个字符
j或下箭头键(↓)光标向下移动一个字符
k或上箭头键(↑)光标向上移动一个字符
l或右箭头键(→)光标向右移动一个字符
[Ctrl] + f屏幕向下移动一页,等同于[Page Down]
[Ctrl] + b屏幕向上移动一页,等同于[Page Up]
[Ctrl] + d屏幕向下移动半页
[Ctrl] + u屏幕向上移动半页
n表示光标在改行向右移动n个字符
0或功能键[Home]移动到这一行的最前面的字符
$或功能键[End]移动到这一行的最后面的字符
H光标移动到这个屏幕上方第一行的第一个字符
M光标移动到这个屏幕中央那一行的第一个字符
L光标移动到这个屏幕下方那一行的第一个字符
G移动到文件的最后一行
nG移动到这个文件的n行
gg移动到这个文件的第一行
n表示向下移动n行
复制粘贴
按键说明移动光标方法
x与Xx为向后删除一个字符,X为向前删除一个字符
dd删除(剪切)光标所在的那一行
ndd删除(剪切)光标所在的向下n行
yy复制光标所在的那一行
nyy复制光标所在的向下n行
p与Pp将已复制的数据在光标的下一行粘贴,P是将已复制的数据在光标的上一行粘贴
u恢复前一个操作
[Ctrl] + r重复上一个操作
查找替换
按键说明移动光标方法
/word向光标之下寻找一个word的字符串
?word向光标之上寻找一个word的字符串
n向下重复前一个查找的操作
N向上重复前一个查找的操作
:n1,n2 s/word1/word2/g在第n1与n2行之间查找word1字符串,并将该字符串用word1字符串替代
:1,$ s/word1/word2/g在第一行与最后一行之间查找word1字符串,并将该字符串用word1字符串替代
:1,$ s/word1/word2/gc在第一行与最后一行之间查找word1字符串,并将该字符串用word1字符串替代时提示确认是否替换

编辑模式

编辑模式是由命令模式切换进入的工作模式,可以分为进入和退出操作

进入编辑模式
按键说明移动光标方法
i与Ii为目前光标处插入,I为目前所在行第一个非空格符处开始插入
a与Aa为目前光标的下一个字符开始插入,A从目前光标所在行的最后一个字符开始插入
o与Oo为在光标的下一行处插入新的一行,O从光标的上一行处插入新的一行
r与Rr为替换光标所在的字符一次,R会一直替换光标所在的文件直到按下Esc
退出编辑模式
按键说明移动光标方法
[Esc]退出编辑模式,回到一般命令模式

命令行模式

命令行模式是由命令模式切换进入的工作模式,主要是保存退出操作

保存退出
按键说明移动光标方法
:w将编辑的数据写入到磁盘文件中
:q退出vim
:q!强制退出不保存
:wq保存后退出,wq!表示为强制保存后退出
ZZ若文件没有修改则不保存退出,若修改则保存后退出
:w [filename]将编辑的数据保存至另一个文件
:r [filename]编辑内容时,将另一个文件的内容追加到光标后面
:n1,n2 w[filename]将n1至n2的内容保存到filename这个文件中

Vim多文件编辑

在编辑文件时,有时需要参考另一个文件,如果在两个文件之间进行切换则比较麻烦。可以使用 Vim 同时打开两个文件,每个文件分别占用一个窗口,切换到另一个文件窗口,可以按 “Ctrl+WW” 快捷键

例如,在査看test2.c 时需要参考test3.c,有两种办法可以实现:

  1. 先使用 Vim 打开第一个文件,接着输入命 令 “:sp./test3.c” 水平切分窗口,然后按回车键;如果想垂直切分窗口则可以输入 “:vs./test3.c”;
  2. 可以直接执行命令"vim -o 第一个文件名 第二个文件名",也就是 “vim-o test2.c test3.c”
LinuxVim多文件编辑

Vim配置文件(.vimrc)详解

Vim 启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim

Vim 配置文件分为系统配置文件和用户配置文件:

  • 系统配置文件位于 Vim 的安装目录(默认路径为 /etc/.vimrc);
  • 用户配置文件位于主目录 ~/.vimrc,即通过执行 vim ~/.vimrc 命令即可对此配置文件进行合理修改。通常情况下,Vim 用户配置文件需要自己手动创建

注意,Vim 用户配置文件比系统配置文件的优先级高,换句话说,Vim 启动时,会优先读取 Vim 用户配置文件(位于主目录中的),所以我们只需要修改用户配置文件即可(不建议直接修改系统配置文件)

Vim环境设置参数

设置参数功能描述
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8设置编码格式,encoding 选项用于缓存的文本、寄存器、Vim 脚本文件等;fileencoding 选项是 Vim 写入文件时采用的编码类型;termencoding 选项表示输出到终端时采用的编码类型。
set nu set numbernu 是 number 的缩写,所以上面两个配置命令是完全等效的,二选一即可。取消行号可使用 set nonu。
set cursorline突出显示当前行。
set mouse=a set selection=exclusive set selectmode=mouse,keyVim 编辑器里默认是不启用鼠标的,通过此设置即可启动鼠标。
set autoindent设置自动缩进,即每行的缩进同上一节相同。
set tabstop=4设置 Tab 键宽度为 4 个空格。

在 Vim 编辑模式中,通过 “:set nu” 命令也可以让 Vim 显示行号,但只是临时有效,下次使用 Vim 编辑文件还是不显示行号。而本节介绍的编辑配置文件设置 Vim 的方式,对 Vim 的设置是永久的

Vim中执行Linux 命令

Vim 编辑器不仅提供了大量的命令来方便和加快我们的文件编辑工作,在此编辑器中,我们还可以直接使用 Linux 命令来进一步提高文件编辑的效率,这就是 Vim 编辑器的所谓过滤功能

由于 Vim 编辑器中支持直接执行 Linux 命令,从而可以方便快捷地对文件完成以下操作:

  1. 将一个命令的输出结果存入正在编辑的文件;

  2. 将正在编辑的文件中的一些数据作为某个指定 Linux 命令的输入

在这里插入图片描述

首先在新建的demo.txt文件中输入https://www.baidu.com/

然后在命令模式下输入!!,界面左下角会出现:!.等信息,这就表明可以输出Linux命令

提示信息. :表示从目前光标开始,!表示为后续执行Linux命令,命令执行结果插入到光标所在行的位置

输入Linux命令date,进入命令模式时光标默认在第一个字符,执行date命令得出的结果将原本的文本值:https://www.baidu.com/进行了覆盖

Vim执行Linux命令的方式

格式功能
:!命令直接运行一个 Linux 命令,运行完毕之后,即可返回到 Vim 中。
:w!命令将 Vim 中所有的文本内容作为指定命令的输入。但命令的执行结果不会写入到当前文件中。
:r!命令将命令执行的结果写入到当前 Vim 中,例如 :!ls 表示将 ls 的执行结果输入到 Vim 中。
:nr!命令其中 n 为数字,表示将命令的执行结果写入到 Vim 第 n 行的位置。例如,:3r!date 表示将 date 命令的执行结果写入到第 3 行文本处。
:n,m!命令其中 n 表示起始行号,m为结束行号,功能是将 Vim 中指定的部分文本作为某个命令的输入,同时将命令的输出也插入到当前指定的位置。
:n,m w!命令其中 n 表示起始行号,m为结束行号,其功能是 Vim 中指定的部分文本作为某个命令的输入,但命令的执行结果不会写入到文件中。
!!date向 Vim 中插入当前时间。

总结

Vim是vi improved,是针对vi的升级演变,Vim可以编辑shell脚本、配置文件等,存在三种工作模式:命令模式、编辑模式、命令行模式,vim的环境设置可以写入~/.vimrc文件中,同时Vim可以执行Linux命令

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值