Ubuntu下如何正确使用 vim/vi 编辑器
思韵闪耀
2024-05-15
0

1、关于文本编辑器

文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice等,文本模式下的编辑器有vi、vim(vi的增强版本)和nano 等。

vi和vim是我们在Linux中最常用的编辑器。

nano 工具和DOS操作系统下的edit操作相似,使用简单。


2、vi 编辑器

为什么要学会简单应用vi?

关于vi或vim,它是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理 中,永远不是图形界面的编辑器能比的。在我们没有安装X-windows桌面环境或桌面环境崩溃时,我们仍需要字符模式下的编辑器vi。


vi或vim 编辑器是在创建和编辑简单文档时最高效的工具。


3、vi 编辑器的使用方法

3.1 如何调用vi ;

vi  filename

如例图所示:调用vi编辑test.txt文件。

vi  test.txt

3.2 vi 的三种命令模式;

Command(命令)模式,用于输入命令; (默认模式)

在这里插入图片描述

Insert(插入)模式,用于插入文本;

在这里插入图片描述

Visual(可视)模式,用于视化的的高亮并选定正文;

在这里插入图片描述

关于三种命令模式:

20200210182330598.png


3.3 文件的保存和退出;

Command 模式是vi或vim的默认模式。

如果我们处于其它命令模式时,要通过ESC键切换过来。当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令。

:w                 保存;
:w                 filename 另存为filename;
:wq!               保存退出;
:wq! filename      以filename为文件名保存后退出;
:q!                不保存退出;
:x                 保存并退出 ,功能和:wq!相同


vi test.txt 打开 test.txt 文件

编辑完毕后在Command 模式下输入:wq!保存退出。

3.4 光标移动;

当我们按ESC进入Command模式后,我们可以用下面的一些键位来移动光标。

j 向下移动一行;
k 向上移动一行;
h 向左移动一个字符;
l 向右移动一个字符;
ctrl+b  向上移动一屏;
ctrl+f  向下移动一屏;
向上箭头    向上移动;
向下箭头    向下移动;
向左箭头    向左移动;
向右箭头    向右移动;

我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。

3.5 插入模式(文本的插入);

i      在光标之前插入;
a      在光标之后插入;
I      在光标所在行的行首插入;
A      在光标所在行的行末插入;
o      在光标所在的行的上面插入一行;
O      在光标所在的行的下面插入一行;
s      删除光标后的一个字符,然后进入插入模式;
S      删除光标所在的行,然后进入插入模式;


3.6 文本内容的删除操作;

x       一个字符;
#x      删除几个字符,#表示数字,比如3x;
dw      删除一个单词;
#dw     删除几个单词,#用数字表示,比如3dw表示删除三个单词;
dd      删除一行;
#dd     删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;
d$      删除光标到行尾的内容;
J       清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;


3.7 恢复修改及恢复删除操作;

u      撤消修改或删除操作;

按ESC键返回Command(命令)模式,然后按u键来撤消删除以前的删除或修改;如果您想撤消多个以前的修改或删除操作,请按多按几次u。这和Word的撤消操作没有太大的区别。


3.8 可视模式;

在最新的Linux发行版本中,vi提供了可视模式,因为这个功能是vim才有的。如果您用的vi没有这个功能,就换成vim就有了。打开可视模式,按ESC键,然后按v就进入可视模式。


可视模式为我们提供了极为友好的选取文本范围,以高亮显示;在屏幕的最下方显示有:


-- 可视 --   
                     或
--VISUAL--

进入可视模式,我们就可以用前面所说的命令行模式中的光标移动指令,可以进行文本范围的选取。


选取文本范围有何用?

    我们可以对某部份删除作业,按d键就删除了我们选中的内容。

    选中内容后,我们按y就表示复制;按d表示删除。

注意此时值得一提的是删除的同时也表示复制。

我们返回到命令模式,然后移动光标到某个位置,然后按shift+p键,就把刚才删除的内容贴上了。

退出可视模式,还是用ESC键。


3.9 复制和粘帖的操作;

其实删除也带有剪切的意思,当我们删除文字时,可以把光标移动到某处,然后按shift+p键就把内容贴在原处,然后再移动光标到某处,然后再按p或shift+p又能贴上。

p            在光标之后粘帖
shift+p      在光标之前粘帖


3.10 关于行号;

举一例:

有时我们配置一个程序运行时,会出现配置文件X行出现错误 。

这时我们要用到行号相关的操作:

为所有内容添加行号;

按ESC键,然后输入:

:set number

光标所处位置在屏幕的右下角,有类似如下数字:

     57,8          27%      


在这之中,57表示第57行,8表示第8个字符。

3.11 查找和替换功能;

3.11.1 查找;


首先,我们要进入ESC键,进入命令模式;我们输入 / 或 ? 就进入查找模式了。

/SEARCH     注:正向查找,按n键把光标移动到下一个符合条件的地方;
?SEARCH     注:反向查找,按shift+n 键,把光标移动到下一个符合条件的


举一例:

比如我想在一个文件中找到 am 单词,我应该怎么做呢?

方法如下:

首先按ESC键,进入命令模式,然后输入:

/am
                    或
?am


光标跳回 am 所在第一行。


3.11.2 替换;

按ESC键进入命令模式;

:s /SEARCH/REPLACE/g      注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;
:%s /SEARCH/REPLACE       注:把文档中所有SEARCH替换成REPLACE;
:#,# s /SEARCH/REPLACE/g  注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;

注:在这之中,g表示全局查找。我们注意到,就是没有替换的地方,也会把SEARCH高亮显示。


再举一例说明:

比如我们有一篇文档要修改;

我们把光标所在的行,把所有单词the,替换成THE,应该是:

:s /the/THE/g

我们把整篇文档的所有的the都替换成THE,应该是:

:%s /the/THE

我们仅仅是把第1行到第10行中的the,替换成THE,应该是:

:1,10  s /the/THE/g

4、参考文档

man vi  和  vi --help


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

ubuntu环境下搭建gi...
操作环境:服务器:Ubuntu 24.04.2 LTS+git 2...
2025-03-17
Ubuntu磁盘未分配空间...
虚拟机安装的Ubuntu 24.04.2 LTS,分配的30G空间...
2025-03-04
Ubuntu防火墙ufw的...
一、不使用IPv6打开UFW配置。sudo vim /e...
2024-12-28
Ubuntu解决resol...
1.输入该命令按回车键vi /etc/systemd/resolv...
2024-11-17
ubuntu配置DNS
ubuntu配置DNS在Ubuntu中配置DNS通常涉及编辑/et...
2024-11-17
Ubuntu 24.04上...
一、安装界面系统xfce4sudo apt updatesudo ...
2024-10-22

热门资讯

SIOCADDRT: Netw... SIOCADDRT: Network is unreachable SIOCADDRT: 网络不可达...
centos7下创建新用户和组 linux下添加,删除,修改,查看用户和用户组 1 .增加一个test组 groupadd test...
linux通过sed 修改文件... 13sy.txt里面内容如下 A; B; C; write by luohao199621; 1.要...
关于cannot remove... 关于cannot remove directory: Directory not empty的解决办...
mount: unknown ... mount: unknown filesystem type LVM2_member解决方案 系统启...
OpenMediaVault安... OpenMediaVault 是一个基于Debian的专用 Linux 发行版,用于构建网络连接存储...
centos7 双网卡双网关的... 最近公司需要在一台服务器上同时使用内网和外网,并且都需要跨网段访问,因此需要双网关,但是一台机子上只...
ethtool 命令详解 1 概述 ethtool 是用于查询及设置网卡参数的命令。 2 命令详解 2.1 命令格式 (1) ...
CentOS7单网卡设置双IP... linux系统CentOS7单网卡设置双IP的方法,centos7.5、7.6、7.7设置双IP教程...
Linux进程状态D,S,Z的... Linux进程状态top,ps中看到进程状态D,S,Z的含义 在top和ps命令中有一列显示进程状态...