IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Linux基础学习笔记(九)——vi和vim -> 正文阅读

[开发工具]Linux基础学习笔记(九)——vi和vim

前言

前面基本总结了Linux中一些文件的各种操作,后面开始为shell脚本的学习做好准备,这里开始总结vi和vim的内容,依旧参照《鸟哥的Linux私房菜》一书中的内容,本篇博客对应这本书中第九章的学习内容

三种模式

vi和vim都有三种模式——一般指令模式,编辑模式,命令行模式
在这里插入图片描述

三种模式的转换方式如上图所示

一般指令模式:我们vi指令打开文件,就进入了命令模式,在这个模式中,可以通过上下键来移动光标,可以删除字符或删除整行,也可以复制黏贴文件内容,同时通过相关按钮可以退出vi和vim

编辑模式:输入i,a,o按钮,或者insert和replace按键,进入到编辑模式,在编辑模式里头可以编辑文件内容,如果要退出该模式,按Esc键即可。

命令行模式:在一般指令模式中,输入 /三个按钮,光标会位于屏幕最底部,在这个模式中,我们可以搜索文档中的相关内容。

vi编辑器

通过vi命令创建一个文件,这个就太简单了,这里就不总结了,只是总结一下vi相关的快捷键

一般指令模式下可用的快捷键

移动光标的操作

按钮效果
h 或 ←光标向左移动一个字符
j 或 ↓光标向下移动一个字符
k 或 ↑光标向上移动一个字符
l 或 →光标向右移动一个字符
[Ctrl]+[f]屏幕向下移动一页,等同于Page Down
[Ctrl]+[b]屏幕向上移动一页,相当于Page Up
[Ctrl]+[d]屏幕向下移动半页
[Ctrl]+[u]屏幕向上移动半页
+光标移动到非空格符的下一列
-光标移动到非空格符的上一列
n<space>n表示数字,按下数字键之后按空格,光标会向右移动这一列的n个字符。
0 或 Home键移动到这一行开头
$ 或 End键移动到这一行的末尾
H光标移动到这个屏幕的最上方那一列的第一个字符
M光标移动到这个屏幕的中央那一列的第一个字符
L光标移动到这个屏幕的最下方那一列的第一个字符
G移动到这个文件的最后一列
nGn为数字,移动到这个文件的第n列
gg移动到这个文件的第一列
n<Enter>n为数字,光标向下移动n列

搜寻与替换

按钮效果
/word向当前光标之下找寻第一个word的字符串。
?word向当前光标之上寻找一个字符串为word的字符串
n这个不是数字,是英文n的按键,是next的意思,搜寻下一个匹配的字符
N与n相反,搜寻上一个匹配的字符
:n1,n2s/word1/word2/gn1与n2为数字,在第n1列与n2列之间寻找word1这个字符串,并将字符串取代为word2
:1,$s/word1/word2/g从第一列到最后一列寻找word1字符串,并将字符串word1替换成word2
:1,$s/word1/word2/gc从第一列到最后一列寻找word1字符串,并将字符串替换word2,且在取代前给出提示信息

删除,复制与粘贴

按钮效果
x,X在一列字当中,x为向后删除一个字符(相当于del),X为向前删除一个字符(相当于backspace)
nxn为数字,连续向后删除n个字符
dd删除游标所在的那一整列
nddn为数字,删除光标所在的向下n列
d1G删除光标所在行到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该列的最后一个字符
d0删除游标所在处,到该列的最前面的一个字符
yy复制游标所在的那一行
nyyn为数字,复制光标所在的向下n列
y1G复制光标所在列到第一行的所有数据
yG复制光标所在列到最后一行的所有数据
y0复制光标所在的那个字符到该列行首的所有数据
y$复制光标所在的那个字符到该列行尾的所有数据
p,Pp为将已复制的数据在光标下一行贴上,P则为贴在游标上一行
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,比如向下删除10行
u复原前一个动作(类似Ctrl+z)
[Ctrl]+r重做上一个动作
.重复前一个动作

一般指令模式切换到编辑模式的按钮

按钮作用
i,I【进入插入模式】
i——从目前光标所在处插入。
I——在目前所在列的第一个非空格符处开始插入
a,A【进入插入模式】
a——从目前光标所在的下一个字符处开始插入
A——从光标所在行的最后一个字符处开始插入
o,O【进入插入模式】
o——目前光标所在的下一行出插入新的一行,
O——在目前光标所在的上一行插入一行
r,R【进入替换模式】
r——只会允许替换一次
R——可以替换多次,除非按下ESC退出替换模式为止
Esc退出编辑模式,回到一般指令模式中

一般指令模式切换到指令模式

按钮作用
:w将编辑的数据写入到硬盘
:w!文件属性为只读的时候,强制写入该文件
(能否写入,还要看权限)
:q退出vi
:q!不保存修改,直接退出
:wq保存之后直接退出
ZZ如果文件没有改动,则直接退出。
如果文件有改动,则保存退出
:w [filename]将编辑的数据存储成另一个文件(类似另存为)
:r [filename]在编辑的数据中,读入另一个文件的数据
:n1,n2 w [filename]将n1到n2的内容存储成filename这个文件
:! command暂时离开vi,到指令模式下执行command的显示结果
例如::! ls /home 暂时离开vi 查询/home的文件,按Enter回到vi
:set nu显示行号
:set nonu取消行号显示

鸟哥的linux中还有一个完整的实例,跟着走一遍,对vi的使用应该算是有较好的理解了。这里就不做总结了。

vim编辑器

vim具有颜色显示功能,同时还支持许多的程序语法,功能比vi丰富。上面总结的vi的操作,vim几乎都支持,还提供了很多额外的功能

区块选择

按钮功能
v从光标当前位置开始,
光标所经过的地方会被选中,
再按一下v结束
V从光标当前行开始,
光标经过的行都会被选中,
再按一下V结束。
Ctrl + v从光标当前位置开始,
选中光标起点和终点所构成的矩形区域,
再按一下Ctrl + v结束
y复制选中的地方
d删除选中的地方
p粘贴刚选中的内容

多文件编辑

vim其实是支持多文件编辑的,只需要在vim命令之后同时接多个文件名即可

## vim 编辑hosts文件和services文件
[root@localhost tmp]# vim hosts services

vim下编辑多个文件的可用按键如下

按钮功能
:n编辑下一个文件
:N编辑上一个文件
:files列出当前vim编辑的所有文件

实例如下:
在这里插入图片描述

多窗口编辑

可以通过:sp {filename}指令,达到分窗口区域编辑文件的效果

:sp filename

在vim的命令窗口情况下输入上述命令,可将文本进行分区编辑。如下动图所示
在这里插入图片描述

这种情况下一些可用按钮如下所示

按钮功能
:sp [filename]开启一个窗口,如果没有filename,
则表示两个窗口编辑同一个文件内容
ctrl+w+j/↓移动到下方的编辑窗口
ctrl+w+k/↑移动到上方的编辑窗口
ctrl+w+q等同于:q退出多窗口编辑

《鸟哥的Linux私房菜》一书中,总结了一些vim的快捷键和指令
在这里插入图片描述

关于换行符

vi和vim的使用还有些其他需要注意的,换行符是一个。

通常情况下windows下的换行符是CRLF,而Linux下的换行符时LF,如果我们在windows下编写了shell,需要放到linux下执行,这个时候需要注意换行符的处理。这需要用到dos2unix和unix2dos工具

## 安装dos2unix和unix2dos
[root@localhost vitest]# yum install -y dos2unix
[root@localhost vitest]# yum install -y unix2dos

在这里插入图片描述

这里不演示具体实例了

[root@localhost vitest]# ls
man_db.conf  man.test.config
##将man_db.conf,由unix转成dos,会有相关提示
[root@localhost vitest]# unix2dos -k man_db.conf 
unix2dos: converting file man_db.conf to DOS format ...
##将man_db.conf转换成unix,并将转换后的内容输出到新文件
[root@localhost vitest]# dos2unix -k -n man_db.conf man_db.conf.linux
dos2unix: converting file man_db.conf to file man_db.conf.linux in Unix format ...
##查看文件的属性,会显示换行符的相关信息
[root@localhost vitest]# file man_db.conf*
man_db.conf:       ASCII text, with CRLF line terminators
man_db.conf.linux: ASCII text

关于编码格式转换

每个文件编码格式的转换通过iconv命令来处理
在这里插入图片描述

总结

简单梳理了一下vi和vim的常见按键和用法,后面进入到shell以及linux的进程、网络管理等内容的总结

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:17:52  更:2022-06-29 19:17:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 3:46:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码