学习vi
作者:夏武
1 vi介绍
vi是Unix世界里极为普遍的全萤幕文本编辑器,几乎可以说任何一台Unix机器都会提供这套软件。Linux当然也有,它的vi其实是elvis(版权问题),不过用法都差不多。由于vi的广泛使用,因此学习vi是很有意义的。
2 基本概念
vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可,而从输入模式切换到指令模式,则需在输入模式下键入ESC键。
3 快捷键
3.1 由指令模式进入输入模式
表1是由指令模式进入输入模式的指令列表。
快捷键 | 用途 | 快捷键 | 用途 |
---|---|---|---|
a | 从光标所在位置后面开始新增 | A | 从光标所在行行尾新增 |
i | 从光标所在位置前面插入 | I | 从光标所在行的第一个非空格字符前面插入 |
o | 在光标所在行下新增一行并进入输入模式 | O | 在光标所在行上新增一行并进入输入模式 |
3.2 文件操作
表2是文件操作的指令列表。
快捷键 | 用途 | 快捷键 | 用途 |
---|---|---|---|
:wq | 保存退出 | :q! | 不保存退出 |
3.3 基本编辑操作
表3是基本编辑指令列表。
快捷键 | 用途 | 快捷键 | 用途 |
---|---|---|---|
x | 删除光标所在位置的字符 | dd | 删除光标所在的行 |
r | 修改光标所在位置的字符,接着输入新的字符 | R | 进入替换状态,新增字符会覆盖原有字符,直到按 [ESC] 回到指令模式下为止 |
s | 删除光标所位置字符,并进入输入模式 | S | 删除光标所在行,并进入输入模式 |
0 | 移动到光标所在行的行首 | j | 移动到下一行 |
k | 移动到上一行 | CTRL-n | 移动到下一行 |
CTRL-p | 移动到上一行 | CTRL-d | 向下半页 |
CTRL-f | 向下一页 | CTRL-u | 向上半页 |
CTRL-b | 向上一页 | H | 移动到窗口的首行 |
M | 移动到窗口的中间行 | L | 移动到窗口的末行 |
w | 移动到后一个单词的第一个字母 | e | 移动到光标处的单词最后一个字母处 |
b | 移动到光标处的单词第一个字母处 | $ | 移动到光标所在行行尾 |
d0 | 移动到光标所在行行首 | ( | 移动到光标所在行的上一行 |
) | 移动到光标所在行的下一行 | { | 移动光标所在段落的结尾 |
} | 移动光标所在段落的开头 | n- | 向上移动n行 |
n+ | 向下移动n行 | nG | 移动到第n行 |
4 组合编辑指令
组合指令包括指令和范围组成。表3的指令可以用来指定范围。例如:删除当前行以后的5行,指令为d5G。 表4是组合编辑的指令列表:快捷键 | 用途 | 快捷键 | 用途 |
---|---|---|---|
d | 删除 | y | 复制 |
p | 粘贴 | c | 剪切 |
5 杂项
快捷键 | 用途 | 快捷键 | 用途 |
---|---|---|---|
:%s/[被替换字符串]/[替换字符串]/g | 替换字符串 | /[查找的字符串] | 查找字符串 |
gg=G | 自动缩进 | CTRL-n | 自动完成(输入模式下) |
6 .vimrc文件配置
很多情况下,我们使用的vi其实应该叫vim,这是一种vi的增强版。 当在终端下使用vim的时候,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。下面是.vimrc的配置样例:
" 显示行号 set nummber " 检测文件类型 filetype on " 记录历史的行数 set history=1000 " 语法高亮显示 syntax on " 设置自动对齐 set autoindent " 设置智能对齐 set smartindent " 设置TAB键为4个空格 set tabstop=4 " 显示匹配模式 set showmatch " 去掉编辑错误时的响声 set vb t_vb= " 在终端中使用鼠标 set mouse=a " 查找时忽略大小写 set ignorecase " 当执行:make,:next指令时自动保存文件内容 set autowrite
7 总结