vi编辑器
- vim是Vi improved的缩写,是vi的改进版
- linux中,vi被认为是事实上的标准编辑器
进入vi编辑器
命令 |
描述 |
vi filename |
如果filename存在,则打开;揉着创建一个新的文件叫做filename |
vi -R filename |
以只读模式打开现有文件 |
view filename |
以只读模式打开现有文件 |
- 竖线(|)代表光标的位置。
- 波浪号(~)代表该行没有任何内容。如果没有 ~,也看不到任何内容,那说明这一行肯定是有空白字符(空格、tab 缩进、换行符等)或不可见字符。
工作模式
- 由Shell进入vi编辑器时,首先进入普通模式。在普通模式下,从键盘输入任何字符都被当作命令来解释。普通模式下没有任何提示符,输入命令后立即执行,不需要回车,而且输入的字符不会在屏幕上显示出来。
- 普通模式下可以执行命令、保存文件、移动光标、粘贴复制等。
- 编辑模式主要用于文本的编辑。该模式下用户输入的任何字符都被作为文件的内容保存起来,并在屏幕上显示出来。
- 命令模式下,用户可以对文件进行一些高级处理。尽管普通模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式。
退出vi编辑
- 退出之前,可以在w命令后面指定一个文件名,则可以将文件另存为新文件:
w filename2
移动光标
- 为了不影响文件内容,必须在普通模式(按两次 Esc 键)下移动光标。使用下表中的命令每次可以移动一个字符:
命令 |
描述 |
k |
向上移动 |
j |
向下移动 |
h |
向左移动 |
l |
向右移动 |
- 两点提醒:
- vi 是区分大小写的,输入命令时注意不要锁定大写。
- 可以在命令前边添加一个数字作为前缀,例如,2j 将光标向下移动两行。
- 其他移动命令:
命令 |
说明 |
0 |
将光标定位在一行的开头 |
$ |
将光标定位在一行的末尾 |
w |
定位到下一个单词 |
b |
定位到上一个单词 |
( |
定位到一句话的开头(句子是以 ! . ? 三种符号来界定的) |
) |
定位到一句话的结尾 |
{ |
定位到段落开头 |
} |
定位到段落结尾 |
[[ |
回到段落的开头处 |
]] |
向前移动到下一个段落的开头处 |
1G |
移动到文件第一行 |
G |
移动到文件最后一行 |
nG或:n |
移动到文件第n行 |
H |
移动到屏幕顶部 |
nH |
移动到屏幕顶部第n行 |
M |
移动到屏幕中间 |
L |
移动到屏幕底部 |
nL |
移动到屏幕底部第n行 |
:x |
x为一个数字,标识移动到行号为x的行 |
控制命令
命令 |
描述 |
CTRL+d |
向前滚动半屏 |
CTRL+f |
向前滚动全屏 |
CTRL+u |
向后滚动半屏 |
CTRL+b |
向后滚动全屏 |
CTRL+e |
向上滚动一行 |
CTRL+y |
向下滚动一行 |
CTRL+I |
刷新屏幕 |
编辑文件
命令 |
描述 |
i |
在当前光标位置之前插入文本 |
I |
在当前行的开头插入文本 |
a |
在当前光标位置之后插入文本 |
A |
在当前行的末尾插入文本 |
o |
在当前位置下面创建一行 |
O |
在当前位置上面创建一行 |
删除字符
命令 |
描述 |
x |
删除当前光标下的字符 |
X |
删除光标前面的字符 |
dx |
删除从当前光标到单词结尾的字符 |
d^ |
删除从光标到行首的字符 |
D |
删除从当前光标到行尾的字符 |
dd |
删除当前光标所在行的字符 |
可以在命令前面添加一个数字前缀,表示重复操作的次数,例如,2x 表示连续两次删除光标下的字符,2dd 表示连续两次删除光标所在的行。
修改文本
命令 |
描述 |
cc |
删除当前行,进入编辑模式 |
cw |
删除当前字,进入编辑模式 |
r |
提花当前光标下的字符 |
R |
从当前光标开始替换字符,按Esc键退出 |
s |
用输入的字符代替当前字符,进入编辑模式 |
S |
用输入的文本代替当前的行,进入编辑模式 |
粘贴复制
命令 |
描述 |
yy |
复制当前行 |
nyy |
复制n行 |
yw |
复制一个单词 |
nyw |
复制n行 |
p |
将复制的文本粘贴到光标的后面 |
P |
将复制的文本粘贴到光标的前面 |
set命令
命令 |
说明 |
:set ic |
搜索时忽略大小写 |
:set ai |
设置自动缩进 |
:set noai |
取消自动缩进 |
:set nu |
显示行号 |
:set sw |
设置缩进的空格数。例如,将缩进空格数设置为4::set sw=4。 |
:set ws |
循环搜索:若果知道文件末尾也没有查找到指定的字符,那么回到开头继续查找 |
:set wm |
设置自动换行。例如,设置距离边际2个字符时换行::set wm=2 。 |
:set ro |
将文件类型改为只读 |
:set term |
输出终端类型 |
:set bf |
忽略输入的控制字符,如BEL、BS、CR |