Linux⑤—Vi与Vim编辑器

Linux⑤—Vi与Vim编辑器

<<<CSND排版不美观,想看排版美观的进Linux⑤—Vi与Vim编辑器>>>

Vi编辑器

①简介及学习原因
Vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,Vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但Vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。而且当连接Linux服务器对文本文件进行操作时也没有图形化编辑器,所以非常有必要学习一下 Vi 的命令。

②Vi和Vim
Vi是 Visual interface 的简称,是Linux中最经典打得文本编辑器
Vi的设计思想是:让程序员的手指始终保持在键盘的核心区域就可以完成所有编辑操作
Vi的特点:
1、没有图形化界面的功能强大的文本编辑器
2、只能是编辑文本文件,不能对字体和段落进行样式排版
3、不支持鼠标操作
4、没有菜单
5、只能通过命令进行编辑

Vim是 Vi improved 的简称,Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。
注意:在很多Linux发行版中,直接把 Vi 做成 Vim 的软连接

③相关操作
打开文件,格式:
vi 文件名

打开文件并定位到指定行,格式:
vi 文件名 +行数
注意:如果只带上 + ,而不指定行号,会直接定位到文件末尾;实用,方便下次进该文本文件接着编辑。

新建文件,格式:
vi 新文件名

如果Vi异常退出,没有保存修改,那么在磁盘上可能会保存有交换文件,到时候可以按提示按下键盘D,删除交换文件即可。

④Vi三种工作模式
1、命令模式:
打开文件后首先会进入命令模式,相当于Vi入口
通过命令模式可以进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除…
在其他图形编辑器可以通过快捷键或者鼠标实现的操作,在此都以命令模式实现
命令模式输入 i 即可进入编辑模式,i 为 insert 的缩写
命令模式输入 : 即可进入末行模式
2、末行模式–执行保存、退出等操作
要退出Vi返回控制台,就需要在末行模式中输入命令,相当于Vi的出口
末行模式按 Esc 键即可进入命令模式
末行模式输入 wq 即可保存关闭文件,wq为 write 和 quit 的缩写
命令 英文 功能
w write 保存
q quit 退出,如果没有保存,不允许退出
q! quit 强行退出,不保存退出
wq write & quit 保存并退出
x 保存并退出

3、编辑模式
编辑文本文件
编辑模式按 Esc 键即可回到命令模式

⑤Vi命令
1、重复
在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数
2、移动
上下左右移动
命令 功能 手指
h 向左 食指
j 向下 食指
k 向上 中指
l 向右 无名指

行内移动
命令 英文 功能
w word 向后移动一个单词
b back 向前移动一个单词
0 行首
^ 行首,第一个不是空白字符的位置
$ 行尾

行数移动
命令 英文 功能
gg go 文件顶部
G go 文件末尾
数字gg go 移动到 数字 对应行数
数字G go 移动到 数字 对应行数
:数字 移动到 数字 对应行数

屏幕移动
命令 英文 功能
Ctrl+b back 向上翻页
Ctrl+f forward 向下翻页
H Head 屏幕顶部
M Middle 屏幕中间
L Low 屏幕底部

段落移动
Vi使用空行来区分段落
在程序开发时,通常 一段功能相关的代码会写在一起
命令 功能
{ 上一段落
} 下一段落

括号切换
因为编写程序,()、[]、{}使用频率很高,所以通过下面可以在括号间切换
命令 功能
% 括号匹配及切换

切换到标记地点

命令 英文 功能
mz mark 添加标记z,z是az或者AZ之间的任意一个字母
z 直接定位到标记z所在位置
注意几点:
如果添加标记的行被删除,标记同时被删除
如果在其他行添加了相同名称的标记,之前的添加的标记也会被替换掉

选中文本
在Vi中要选中文本,首先需要用visual命令切换到可视模式
Vi提供了三种可视模式,方便程序员选择 选中文本
按ESC可以放弃选中,返回到 命令模式
命令 英文 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
Ctrl + v 可视块模式 垂直方向选中文本
可以模式可以和 移动命令组合使用

3、撤销和恢复撤销
命令 英文 功能
u undo 撤销上次命令
Ctrl + r redo 恢复撤销的命令

4、删除文本
命令 英文 功能
x cut 删除光标所在符号,或者选中文字,x可以和数字结合删除从该字符开始算起到后面x个数都删除,实质是剪切
d(移动命令) delete 删除移动命令对应的内容,实质是剪切
dd delete 删除光标所在行,可以ndd删除当前行开始的n行
D delete 删除至行尾
注意:
如果使用 可视模式 已经选中一段文本,那么无论使用d还是x,都可以删除选中文本,删除命令也可以和移动命令连用
删除命令和移动命令 常使用的结合命令:
dw 从光标位置删除到单词末尾
d0 从光标位置删除到一行的起始位置
d} 从光标位置删除到段落结尾
ndd 从光标位置向下连续删除n行
d代码行G 从 光标所在行 删除到 指定代码行 之间的所有代码
d’a 从 光标所在行 删除到 标记a 之间的所有代码

5、复制、粘贴
Vi提供有一个被复制文本的缓冲区
复制 命令会将选中的文字保存在缓冲区
删除 命令删除的文字会被保存在缓冲区
在需要的位置,使用 粘贴 命令可以将缓冲区的文字插入到光标所在位置
命令 英文 功能
y(移动命令) copy 复制
yy copy 复制一行,可以nyy复制多行
p paste 粘贴

提示:
命令d、x类似于图形界面的 剪切操作 —— Ctrl + x
命令 y 类似于图形界面的 剪切操作 —— Ctrl + c
命令p类似于图形界面的 剪切操作 —— Ctrl + v
Vi中文本缓冲区只有一个,如果后续有剪切复制操作,之前缓冲区的内容将会被替换

注意:
Vi的 文本缓冲器 和 系统的剪切板 不是同一个
在其他软件如果有使用Ctrl + c 复制的内容,不能在 Vi 中通过 p 命令粘贴,但可在编辑模式下使用鼠标右键点击粘贴。

6、替换
命令 英文 功能 工作模式
r replace 替换当前字符 命令模式
R replace 替换当前行光标后的字符 替换命令
R命令可以进入替换模式,替换完成后,按ESC回到命令模式。替换模式方便在于不用进入编辑模式,可以对文件中的内容进行轻量级的修改

7、缩排和重复执行
命令 功能

向右增加缩进
<< 向左减少缩进
. 重复上次命令
缩排即一次性在选中代码前增加/减少4个空格
在 可视模式 下,缩排命令只需要使用一个 > 或者 <

8、查找与查找替换
常规查找
命令 功能
/string 查找 string
查找到指定内容之后,使用 Next 查找下一个出现的位置:
n:查找下一个
N:查找上一个

单词快速匹配
命令 功能
* 向后查找当前光标所在单词

# 向前查找当前光标所在单词

查找替换
在Vi中查找和替换命令需要在末行模式下执行
记忆命令格式:
:%s///g
(1)全局替换
一次性全部替换文件中出现过的此文本
:%s/旧文本/新文本/g
(2)可视区域替换
先选中要替换文字的范围
命令格式如下:
: s/旧文本/新文本/g
会将该区域内的旧文本替换成新文本
(3)确认替换
如果把末尾的g改成gc ,在替换的时候,会有提示!推荐使用
:%s/旧文本/新文本/gc
y — yes 替换
n — no 不替换
a — all 替换所有
q — quit 退出替换
l — last 最后一个,并把光标移动到行首
^E 向下滚屏
^Y 向上滚屏

9、插入命令
在Vi中除了常用的i进入 编辑模式 外,还是提供了以下命令同样可以进入编辑模式
命令 英文 功能 是否常用
i insert 在当前字符前插入文本 命令模式
I insert 在行首插入文本 较常用
a append 在当前字符后添加文本
A append 在行末添加文本 较常用
o 在当前行后面插入一空行 常用
O 在当前行前面插入一空行 常用

10、实用方面
实用一:编辑命令和数字连用
在开发中,可能会遇到连续输入N个同样的字符
例如:********** 连续10个星号
实现(假设现在在命令模式下):
1、输入 10,表示要重复10次
2、输入 i ,进入 编辑模式
3、输入 * 也就是重复的文字
4、按下ESC返回到命令模式,返回之后Vi就会把第2、3两步的操作重复10次
所以一定注意:正常开发时候,进入编辑模式之前,不要按数字

实用二:利用 可视块 给多行代码增加注释
在开发中,可能会有一次性给多行代码 增加注释 的情况
实现(假设在命令模式下):
1、移动到要添加注释的第1行代码,按 ^ 来到行首
2、按 Ctrl+v 进入可视化模块
3、使用 j 向下连续选中需要注释的代码行
4、使用 I 进入编辑模式,并在行首插入,注意:一定要使用 I
5、输入 # ,也就是注释符号
6、按下 ESC 返回到命令模式,返回之后 Vi 会在之前选中的每一行代码前插入 #

11、分屏命令
属于 Vi 高级命令—可以同时编辑和查看多个文件
末行命令主要是针对文件进行操作的:保存、退出、保存&退出、搜索&替换、另存、新建、浏览文件
末行命令扩展:
命令 英文 功能
:e . edit 会打开内置的文件浏览器,浏览要当前目录下的文件
:e 文件名 edit 切换文件
:n 文件名 new 新建文件
:w 文件名 write 另存为,但是仍然编辑当前文件,并不会切换文件
提示:切换文件之前,必须保证当前这个文件已经被保存!

已经学过的末行命令有:
命令 英文 功能
w write 保存
q quit 退出,如果没有保存,不允许退出
q! quit 强行退出,不保存退出
wq write & quit 保存并退出
x 保存并退出
:%s///g 搜索并替换

分屏命令
分屏命令可以同时编辑和查看多个文件
命令 英文 功能
:sp [文件名] split 横向增加分屏
:vsp [文件名] vertical split 纵向增加分屏

切换分屏窗口
分屏窗口都是基于 Ctrl + w 这个快捷键的,w对应的英文单词是window
先都需要按Ctrl + w
命令 英文 功能
w window 切换到下一个窗口
r reverse 互换窗口
c close 关闭当前窗口,但是不能关闭最后一个窗口
q quit 退出当前窗口,如果是最后一个窗口,则关闭Vi
o other 关闭其他窗口

发布了23 篇原创文章 · 获赞 15 · 访问量 2559

猜你喜欢

转载自blog.csdn.net/u010511598/article/details/88360113