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 表示连续两次删除光标所在的行。linux
修改文本
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 |