vi编辑器的使用
一个编辑器具备的功能
1)打开文件、新建文件、保存文件
2)光标移动
3)文本编辑
4)(多行间|多列间)复制、粘贴、删除
5)查找和替换
//=========================================
vi编辑器的配置
cd /etc/vim
cp vimrc ~/.vimrc
cd ~
gedit .vimrc
在.vimrc中加入如下内容:
"关闭兼容功能
set nocompatible
"显示行号
set number
"编辑时 backspace 键设置为2个空格
set backspace=2
"编辑时 tab 键设置为4个空格
set tabstop=4
"设置自动对齐为4个空格
set shiftwidth=4
"搜索时不区分大小写
set ignorecase
"搜索时高亮显示
set hlsearch
//=========================================
vi编辑器有三种模式
1)一般模式(光标移动、复制、粘贴、删除) 按下Ese键
2)编辑模式(编辑文本) 按下 “i”/“o”键
3)命令行模式(查找和替换) 按下"/"和“:”键
注意:
1)当不知道处于何种模式时,按ESC键返回到一般模式。
2)wq(write quit) 保存退出
3)i(insert)插入
//==================================================
1.打开文件、新建文件、保存文件
vi 文件名
如果文件存在,输入结束后,:wq保存并退出文件
如果文件不存在,输入结束后,:wq就可以新建并保存文件
在编辑完成时,返回一般模式,
1)输入:w则保存文件,如果已经保存文件,输入:q则退出文件
2)直接输入:wq保存并退出
3)如果不想保存被修改的内容,则:q!强制退出。
2.进入编辑模式
i(在光标前开始插入文本)
a在光标后开始插入文本
o(在当前行之下新开一行,并到行首)
3.光标移动
在一般模式下,hjkl这四个按键就可以移动光标
h(左)
j(下)
k(上)
l(右)
快速的定位到某一行:
文件头、文件尾、指定某一行
ngg光标移至第n行的行首(n为数字),
如1gg就跳到第一行的行首,就是文件头
如2gg就跳到第二行的行首
G转至文件结尾
注意:ngg和G是在一般模式
在某一行如何快速定位到某一列
0(数字零)光标移至当前行行首
$光标移至当前行行末
fx搜索当前行中下一个出现字母x的地方
注意:0、$、fx是在一般模式
vi的难点:
1)vi操作之前,先判断一下当前是哪一种模式,再看光标所在位置。
当你不知道处于何种模式时,使用esc键返回到一般模式。
再看光标,难点在于移动光标,可以做到快速切换到某一行某一列。
4.文本复制、粘贴、删除、撤销
yy复制当前行(y:yank(复制))
nyy复制当前行及其后的n-1行(n是数字)
使用P键来粘贴(p:paste)
dd 删除光标所在行(d:delete)
ndd 删除当前行及其后的n-1行(n是数字)
按u键来撤销上一步操作
x删除光标所在位置的字符
注意:
yy/nyy/dd/ndd/x/u都是在一般模式。
5.查找和替换
/pattern 从光标开始处向文件尾搜索pattern,后按下n或N
注意:
n在同一个方向重复上一次搜索命令
N在反方向重复上一次搜索命令
n(N)来源于next
注意:
在/pattern之前先跳到第一行则进行全文件搜索。
:%s/p1/p2/g将文件中所有的p1均用p2替换
:%s/p1/p2/gc替换时需要确认
s:substitute替换
g:global全局
c:confirm确认
vi的难点:
1)vi操作之前,先判断一下当前是哪一种模式,再看光标所在位置。
当你不知道处于何种模式时,使用esc键返回到一般模式。
再看光标,难点在于移动光标,可以做到快速切换到某一行某一列。
vi编辑器有三种模式
1)一般模式(光标移动、复制、粘贴、删除、撤销)
hjkl、ngg/G、0、$、fx
yy/nyy
p
dd/ndd、x
u
2)编辑模式(编辑文本)
i a o
3)命令行模式(查找和替换、保存退出文件)
/pattern、:%s/p1/p2/gc、:wq
内容 | 命令/作用 | ||||
打开文件 | vi文件名 | vi 文件名 +行号 | |||
退出/保存文件 | :w 保存文件 | :wq 保存文件并退出vi | |||
:q!强制退出vi,即使该文件被修改,也不保存该文件 | |||||
进入编辑模式 | i在光标前开始插入文本 | a在光标后开始插入文本 | |||
o在当前行之下新开一行,并到行首 | O在当前行之上新开一行 | ||||
光标移动 | 多 行 间 切 换 | Ctrl +f向前滚动一整屏 | Ctrl +b向后滚动一整屏 | ||
gg转至文件开头 | G转至文件结尾 | ||||
ngg/nG光标移至第n行的行首 (n为数字) | :n光标移至第n行的行首 (n为数字) | ||||
n+光标向下移动n行(n为数字) | n-光标向上移动n行(n为数字) | ||||
j/nj光标向下移动1行/n行(n为数字) | k/nk光标向上移动1行/n行(n为数字) | ||||
单 行 列 切 换 | 0(数字零)光标移至当前行行首 | $光标移至当前行行末 | |||
h/nh光标向左移动1列/n列 (n为数字) | k/nk光标向右移动1列/n列 (n为数字) | ||||
w光标移动到下一个字的开头 | b光标移动到上一个字的开头 | ||||
fx搜索当前行中下一个出现字母x的地方 | Fx搜索当前行中上一个出现字母x的地方 | ||||
文本复制命令 | yy复制当前行 | nyy复制当前行及其后的n-1行 | |||
文本删除命令 | x删除光标后的一个字符 | X删除光标前的一个字符 | |||
nx删除光标后的n个字符 | nX删除光标前的n个字符 | ||||
dw从光标处删至当前词尾 | db从光标处删至当前词首 | ||||
d0从光标处删至行首 | d$/D 从光标处删至行尾 | ||||
dd 删除光标所在行 | ndd 删除当前行及其后的n-1行 | ||||
文本粘贴命令 | 使用P键, 如复制当前行,先用yy复制当前行,切换到目的行的上一行后,用p来粘贴所复制的行。 如剪切当前行,先用dd复制当前行,切换到目的行的上一行后,用p来粘贴所剪切的行。 | ||||
撤销命令 | 按u键来撤销上一步操作 | ||||
查找及 替换命令 | /pattern 从光标开始处向 文件尾搜索pattern(在/pattern之前先跳到第一行则进行全文件搜索),后按下n或N | 注: n在同一个方向重复上一次搜索命令 N在反方向重复上一次搜索命令 | |||
?pattern 从光标开始处向文件首部搜索pattern ,后按下n或N | |||||
:s/p1/p2/g将当前行中所有的p1均用p2替换,:s/p1/p2/gc替换时需要确认 | |||||
:n1,n2s/p1/p2/g将n1至n2行中所有的p1均用p2替换,:n1,n2s/p1/p2/gc替换时需要确认 | |||||
:%s/p1/p2/g将文件中所有的p1均用p2替换,:%s/p1/p2/gc替换时需要确认 |
更正:
x删除光标所在位置的字符
nx删除光标所在位置和光标后的n-1个字符