vi 的基本使用
| 浏览:242 |更新:2014-06-26 17:38
vi,Unix&Linux下最基本的编辑器,功能强大使用简单,是用户的必备利器。
模式:
1. 命令模式(默认,通过命令对文件内容进行编辑)
vi //在当前目录创建空文件
vi filename //打开指定文件
vi -o|O f1 f2 //打开多个文件,o|O表示水平|垂直分隔
通过vi打开文件后自动进入命令模式,此模式下所有输入都是命令
2. 插入模式(像windows中的普通编辑器一样使用)
命令模式下按iaoIAO任一键进入插入模式,esc回到命令模式
i在光标前插入文本
I在光标所在行前插入
a在光标后插入文本
A在光标所在行未插入
o在光标所在行下插入新行
O在光标所在行上插入新行
3. 编辑模式(通过命令对文件或文件内容进行编辑)
命令模式下按“:”进入编辑模式,esc或enter执行操作后回到命令模式
4. 视图模式(属于命令模式)
vV进入视图模式,执行字符选中
例:按"H"或"L"移动光标选中字符,通过yd进行复制剪切
常用命令
【定位命令】
hjkl:光标[左下上右]移动,同方向键
0:移至行首
^:非空白行头
$:移至行尾
Enter:移至下行首
H:移至屏幕上端
M:移至屏幕中央
L:移至屏幕下端
C-F:下一页(C-F表示Ctrl+Shift+F)
C-B:上一页
gg:移至第一行
G:移至文件末尾
[n]G:移至文件第n行
:n移至文件第n行
【删除命令】
x:删除光标处字符
nx:光标所在处后n个字符
X:删除光标前字符
dd:剪切光标所在行
ndd:剪切当前行以下n行
dG:删除光标所在行到文件末尾
D:删除光标所在处到行尾
:n1,n2d 删除n1行到n2行之间的内容
【复制&粘贴】
yy/Y:复制当前行
nyy,nY:复制当前行下边的n行
nyh,nyl:复制光标前/后的n个字符
p,P:将已经选择复制或被删除的行粘贴到当前行下或行上
【搜索&替换】
r:取代光标所在处字符
R:从光标所在处开始替换字符,至到按esc结束
s:替换(删除)光标所在处字符,并进入文本输入方式
S:替换(删除)光标所在行,按esc结束
:/string //从上向下搜索字符串
string //从下向上搜索字符串
通过按键n移到下一个结果:
n //时向下,?时向上搜索
N //时向上,?时向下搜索
:%s/old/new/g //把所有old替换为new,g不会询问,c会询问虽否替换
:%s/old//g //把所有old删除
:n1,n2s/old/new/g //在一定范围内替换指定字符串
例:连续行注释
:n1,n2s/^/#/g //^表示行首
:n1,n2s/^/#//g //将行首'#'替换为空,即删除
:n1,n2s/^////g //转义符,使用"//"注释
替换:ab asmmail
[email protected]//输入a时回车或空格,vi自动换成b
unab//取消
【撤消】
u:撤消上一步操作(最多可撤消到文件打开时)。
U:撤消当前行的所有操作。
ctrl+r:取消撤消
【保存退出】
:w保存
:w newfilename另存为
:w!强制保存 //!只针对文件所有者和管理员
:wq保存&退出 //快捷键ZZ
:q退出
:q!强制退出
:wq!强制保存&退出
保存退出
!强制保存&退出
【其它】
:set nu/number //设置行号
:set nonu //取消行号
:set ic //区分大小写
:set noic //取消区分大小写
:vsp //垂直分窗
:sp //水平分窗
C-W p/w //切换到上/下一个窗口
:r filename把指定文件内容导入进来(光标所在位置)。
:! cmd运行cmd命令
:r !date将命令结果导入到文件中
:map 快捷键 触发命令
map ^P I#<ESC> //使用ctrl+p注释本行(使用ctrl+v+[p]输入"^[P]")
map ^B 0x //取消注释
unmap
vi配置:
通过vi配置文件设置vi默认环境。
例:设置vi默认显示行号
cd ~ //回到当前账户家目录下
vi .vimrc //vi配置文件,默认不存在,家目录中,针对当前用户
i//进入编辑模式
set nu
map ^P I#<ESC>
……
:wq