文章目录
VI编辑器-概述
Visual Interface(可视化接口)
编辑
- source insight
- VC
- getit – 记事本
- vi
- vim
类似 Windows 中的记事本,vi 是 Linux 中最基本的编辑器。但 vi 编辑器在系统管理、服务器配置工作中永远都是无可替代的。
- VI 相对于记事本强大的不是一星半点
VIM 相对于 VI 做了哪些提升
- VIM 支持多级撤销
- VIM 可以跨平台运行
- VIM 支持语法高亮
- VIM 支持图形界面
熟悉 vi 的三种模式及模式切换命令
vi 有以下三种模式
- Command Mode - 命令行摸式:用户在用 VI 编辑文件时,最初进入的为该摸式。可以进行复剩、粘贴等操作。
- Insert Mode - 插入摸式:进行文件编辐,按 ESC 键可以回到命令行摸式。
- Last Line Mode - 底行摸式:光标位于屏幕的底行。可以进行文件的保存、退出、查找、替换、列出行号等
vi 模式切换命令
-
命令 功能 i
(Insert)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符 I
行首插入 a
(Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符 A
行尾插入 o
(Open)进入编辑状态,并插入一新行,光标移动到该行的行首, 以后键盘输入的字符将插入到光标位置 O
在上一行插入 s
删除光标所在的字符,进入插入模式 S
删除光标所在的行 ESC
进入命令状态 :! Command
在 vi 中执行外部命令 Command, 按回车键可以返回 vi 继续工作
熟练使用 vi 的拷贝和粘贴命令
命令 | 功能 |
---|---|
p 或 P | (Put)从编辑缓冲区复制文本到当前光标位置(即粘贴)小写:粘贴至下一行、大写:粘贴至上一行 |
[N]x | (Expurgate)删除从光标位置开始的连续 N 个字符(并复制到编辑缓冲区) |
[N]yy | (Yank)复制从光标位置开始的连续 N 行到编辑缓冲区 |
y0 | 将光标至行首的字符拷入剪贴板 |
y$ | 将光标至行尾的字符拷入剪贴板 |
[N]dd | (Delete)删除从光标位置开始的连续 N 行(并复制到编辑缓冲区) |
d0 | 将光标至行首的字符剪切入剪切板 |
d$ | 将光标至行尾的字符剪切入剪切板 |
dw | 将光标至 tab 处的字符剪切入剪切板 |
range y | 块复制,比如:20, 30y |
range d | 块剪切 |
熟练使用 vi 的保存和退出命令
命令 | 功能 |
---|---|
:w | (Write)保存文件,但不退出 |
:w (file) | 另存为 File 给出的文件名,不退出;一般不用 |
:! | 强制执行 |
:q | (Quit)退出没有修改的文件(若文件被修改了而没有保存,则此命令无效) |
:q! | 强制退出,且不保存修改过的部分 |
:x | (Exit)保存文件并退出 |
:r (file) | (Read)读入 File 指定的文件内容插入到光标位置 |
:ls | 列出打开的所有文件 |
:n | 切换到后一个文件 |
:N | 切换到前一个文件 |
熟练使用 vi 的光标命令
命令 | 功能 |
---|---|
x | 删除一个字符 |
r | 替换一个字符 |
R | 替换字符,遇到esc停止 |
b | 移动到单词的开头 |
e | 移动单词的结尾 |
cb | 删除光标前面的单词,进入插入模式 |
ce | 删除光标后面的单词,进入插入模式 |
[n]gg | 将光标移动到第 n 行 |
1G | 移动光标到文件的第 1 行(数字 1) |
G | 移动光标到文件最后一行 |
u | (Undo)取消上一次操作(即恢复功能) |
0 | 光标跳到行首 |
$ | 光标跳到行尾 |
:N | 移动光标到第 N 行(N 待定) |
:set number(:set nu | 设置显示行号 |
:set nonumber(:set nonu | 取消显示行号 |
熟练使用 vi 的查找命令
/string
和 ?string
向前、向后查找字符串(底行模式下)比如:/root
n
继续查找N
反向继续查找- 支持正则表达式比如:
/^the
(以the
开头)/end$
(以end
结尾)
熟练使用 vi 的替换命令
利用 :s
命令可以实现字符串的替代(底行模式下)
:[范围]s/str1/str2/
:[范围]s/str1/str2/g
g
是全部的意思,如果没有,每一行只替换 1 个:.,$s/str1/str2/g
范围是从当前行到文章末尾:1,$s/str1/str2/g
范围是从第一行到文章末尾:%s/str1/str2/g
全文替换(%
=1,$
)
vi 的文本编辑
TAB
键补全int main(arg ...)
使用 vi 分析源代码
ctrl ]
:vi 中定位定义
ctrl o
:返回上一页
总结与思考
vi 的基本命令
- 三种模式、 模式切换命令
- 拷贝和粘贴命令
- 保存和退出命令
建议尽可能多的学习、熟练关于 vi 编辑器使用的命令。
参考资料 vi 手册
主要讲了 vi 编辑器的光标命令、 查找命令、替换命令及复制和剪切命令
vi 编辑器是嵌入式 Linux 环境下开发人员每天工作都要使用的工具,建议多学习、熟练关于 vi 编辑器的使用命令
思考:
- 利用 vi 编辑器, 如何进行替换操作?
思考
-
在 VI 编辑器中如果我们想将一个文件中的第 5 到第 30 行中的字符“abc”替换成“ABC”我们使用什么命令?
:5,30s/abc/ABC/g
-
将
0x55
转化成二进制得到的结果为?在 ASCII 码表中字符3
对应的是数值?0x55
=0b1010101
3
=0b51
-
假如我们使用 VI 编辑器在
Hello.c
文件中编写了一段 C 程序且已经保存,如果我们想编译该 C 程序生成可执行文件 hello 应该输入什么命令?gcc -o hello hello.c