0%

3.Vim与Shell

  • Vim编辑器
  • GNU(第二代Shell)——BASH Shell
  • Bash功能:指令管理、记录、文件或命令补全、环境变量的使用
  • 数据流重导向——正则表达式与文件格式化处理
  • Shell脚本

3.1 Vim

在Linux不同的发行版中,有不同的系统管理工具

  • Red Hat Enterprise Linux 与Fedora 的ntsysv 与setup 等
  • SuSE 则有YAST 管理工具

Linux中,绝大部分的配置文件都是以ASCII纯文本的形式保存,因此使用文本编辑工具也可以完成系统配置与管理等工作

常见的文本编辑工具有:emacs、pico、nano、joe与vim等

  • 通用性:所有类Unix的系统都会内置vi文本编辑器,其他编辑器不一定存在
  • 支持编程:vim具有程序编辑能力,能通过字体颜色辨识语法正确性

vim为vi编辑器的进阶版,vim会依据文件扩展名或文件开头的信息,识别程序的类型,进而调用相应的语法判断程序,再以颜色来区分程序代码

3.1.1 Vi的使用

image-20260108213946488

  • 一般指令模式(command mode):

    内容调整模式

    使用vi打开一个文件,默认为一般模式

    可以进行跳转、搜索与取代、删除(单个字符、整行)、复制、粘贴等功能

  • 编辑模式:

    在一般模式中,键入 iI)、aA)、oO)、rR

    插入或取代文件的内容

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

    文件编辑

    在一般模式中,键入 :/?

    读取或删除文件内容,支持其他额外的功能

编辑模式与指令行模式不能互相切换

1
/bin/vi [文件名]

3.1.2 按键说明

数字,通常表示重复做几次操作,也代表去到第几个

一般指令模式(内容调整模式)

跳转
分类按键结果
光标移一字符
\或 \<←>光标左移一字符
\或 \<↓>光标下移一字符
\或\<↑>光标上移一字符
\或\<→>光标右移一字符
光标移动多字符
n \n表示数字,表示向右移动n个字符
\<0\>或\移动到当前行的最前面一个字符
\<$>或\移动到当前行的最后一个字符
移动一行
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
n \n表示数字, 光标向下移动n行
移动到一屏内指定行
\移动到当前一屏的最上方一个行的第一个字符
\移动到当前一屏的中央一个行的第一个字符
\移动到当前一屏的最下方一个行的第一个字符
移动到指定行
\\移动到本文件的第一行,相当于1G
n\n为数字,表示移动到这个文件的第n行
\移动到当前文件的最后一行
光标跳转一屏
\+\向下移一屏,相当于 \
\+\向上移一屏,相当于 \
\+\向下移半屏
\+\向上移半屏
搜索与替换
分类按键说明
搜索
\</>[word]在光标之下搜索关键词word
\<?>[word]在光标之上搜索关键词word
\在搜索完成后,按\,重复前一个搜索动作
\反方向重复前一个搜索动作
替换
\<:>[n1]\<,>[n2]\\</>[word1]\</>[word2]\</>\在n1行与n2行之间,搜索word1,并将其替换为word2
\<:>\<1\>\<,>\<$>\\</>[word1]\</>[word2]\</>\从第1行到最后一行,搜索word1,并将其替换为word2
\<:>\<1\>\<,>\<$>\\</>[word1]\</>[word2]\</>\\从第1行到最后一行,搜索word1,并将其替换为word2,在替换前让用户确认
删除、复制、粘贴
分类按键说明
删除
\或 \x为向后删除一字符,相当于\
X为向前删除一字符,相当于\
[n]\向后连续删除n个字符
\\<$>删除光标所在位置,到该行最后一个字符
\\<0\>删除光标所在位置,到该行第一个字符
\
删除光标所在行
[n]\
删除光标所在行的向下n行
\\<1\>\删除光标所在行,到第一行的所有数据
\\删除光标所在行,到最后一行的所有数据
复制
\\<0\>复制光标处字符到当前行的第一个字符
\\<$>复制光标处字符到当前行的最后一个字符
\\复制光标所在的行
[n]\\复制光标所在的向下几行
\\<1\>\复制光标所在到第一行的所有数据
\\复制光标所在行到最后一行的所有数据
粘贴
\

将已复制的数据粘贴到光标的下一行
\

将已复制的数据粘贴到光标的上一行
合并
\将光标所在行与下一行的数据合并到同一行
\重复删除多个数据,10\\,向下删除10行
重复与撤销的操作
按键说明
\撤销上一个操作
\+\重复上一个操作
\<.>重复上一个操作

内容调整模式切换到内容编辑模式

模式按键说明
进入插入模式
\,\i表示从当前光标所在处插入
I表示从当前光标所在的第一个非空格字符插入
\,\a表示从当前光标所在的下一个字符处追加
A表示从当前光标所在行的最后一个处追加
\,\o表示在当前光标所在的下一行插入新的一行
O表示在当前光标所在的上一行插入新的一行
进入取代模式
\,\r表示只会取代光标所在的那个字符
R表示一直取代光标所在的字符,直至按下ESC
退出到内容调整模式
ESC

内容调整模式切换到文件编辑模式

分类按键说明
退出
\<:>\将文件内容写入硬盘
\<:>\强制写入
\<:>\退出
\<:>\修改过文件,不保存,强制退出
\<:>\\保存后离开
\<:>\\强制保存后离开
ZZ若未修改文件,则不保存退出;若修改过文件,则保存后退出
\+\退出,vim放到后台执行
另存为
\<:>\[文件名]将数据另存为一个文档
\<:>n1,n2 w [文件名]将n1到n2的内容保存为文件名指定的文件
从其他文件读入
\<:>\[文件名]将文件名指定的数据添加到光标所在行的后面
离开文件执行指令
\<:> command暂时退出vim,显示command的执行结果
行号
:set nu显示行号
:set nonu取消行号

3.1.3 Vim的功能说明

vim的暂存文件

vim在被编辑文件的同级目录下,新建 .filename.swp 的临时文件

出现暂存文件的两种情况:

  • 其他人也在编辑当前文件
  • vim 异常退出

存在暂存文件情况下,有六个可用按键

  • [O]pen Read-Only:以只读文件的形式打开文件
  • [E]dit anyway:以读写形式打开,不载入暂存文件
  • [R]ecover:加载暂存文件内容,退出后,还需要手动删除暂存文件
  • [D]elete:删除暂存文件
  • [Q]uit:退出vim,不进行任何操作
  • [A]bort:忽略编辑

颜色显示功能

相较vi,vim具有颜色显示功能,且支持许多的程序语法,便于进行调试

1
2
3
4
5
[dmtsai@study ~]$ alias
....其他省略....
alias vi='vim'

# 表示当使用vi指令时,其实是在执行vim

区块选择

分区块选择与对区块操作两部分

分类按键说明
区块选择
v按下v后,选择将光标经过的地方
V按下V后,将光标经过的地方反选
Ctrl+v随光标移动,以矩形方式选择
对区块的操作
y复制选中的区块
d删除选中的区块
p在光标处,粘贴选中的区块

多文件编辑

vim是独立的,不支持跨vim窗口进行复制与粘贴,即不能再A文件nyy,再到B文件p

利用vim跨文件复制、粘贴:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 利用vim 打开需要使用的两个文件
vim hosts /etc/hosts

# 2. 使用:files列出vim开启的所有文件
:files

# 3. 按任意键返回vim的一般模式

# 4. 在文件A按下复制键,4yy复制4行

# 5. 使用:n转到vim打开的第二个文件
:n
:N表示前一个文件

# 6. 在第二个文件粘贴

多窗口

按键说明
:sp [文件名]开启新窗口,若不加文件名,则新窗口打开同名文件
\\
\\<↓>
先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下箭头键),则光标可移动到下方的窗口。
\\
\\<↑>
先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 k (或向上箭头键),则光标可移动到下方的窗口。
\\关闭当前窗口
-------------本文结束-------------