vi-vim常用命令
1 简介
在UNIX系统中,创建和修改配置文件、shell脚本、初始化文件、编写程序都离不开VI。
1 vi[1]属于两个主要的UNIX规范:POSIX和单一UNIX规范。
2 vi编辑器由Bill Joy于1976年创建。
3 vi是一种面向屏幕的编辑器。
4 vi来源于另一个编辑器ex。
5 vim是vi的增强版。
2 使用帮助
学习vi,学会使用联机手册或帮助命令是非常重要的。Unix有两个最重要的文档资料系统:Unix手册和Info(GNU项目的官方文档资料系统)。
常用命令:
1 man vi
2 vi –help
3 info vi
对于较长的说明页,可使用分页程序分页显示。常用的分页程序有:less、more、pg。例如:man cp | less
查找说明书页的其它方法(基于web):
1 使用google搜索:(一定要确保包含双引号)
○ “man vi ”
○ “man pages” vi
2 另外一种基于web的说明书页的方法是xman,xman是一个基于GUI的程序,它充当说明书页浏览器。在命令行启动xman:xman&。
Vi的帮助命令::help
3 模式和命令
3.1 输入模式和命令模式
命令模式[2](command mode):所键入的键都被解释成命令。
输入模式(input mode):键入的任何内容都直接插入到编辑缓冲区中。
当离开输入模式时,使用Esc键切换到命令模式。
了解所处模式的方法:
:set showmode
3.2 vi和ex命令
vi和ex是同一个程序的两种不同的表现形式。也就是说可以同时使用vi和ex命令。
vi:
①大多数vi命令都是单字母或双字母的表现形式。
②vi键入时命令不回显。
ex:
①ex命令比vi命令长。
②所有的ex命令都以一个:(冒号)开头。键入:后,vi就将光标移动到命令行上(屏幕最底部)。
③ex命令的每个字符都将回显。
④ex命令结束,必须按下键盘。
4 启动与编辑vi-vim
4.1编辑一个文件
语法:vi 【-rR】 【file……】
常用命令:
1 vi file 启动vi,编辑指定的文件
2 vi -R file 以只读模式启动vi
3 view file 以只读模式启动vi (vi -R file等同于view file)
4 vim file 启动vim,编辑指定的文件
5 vim -C file 以兼容模式启动vi
4.2编辑多个文件
语法:vi a.txt b.txt c.txt
切换文件: :next
4.3 编辑技巧
编辑技巧:
1 vi +[num] file 打开文件,并将光标置于第n行首
2 vi + file 打开文件,并将光标置于最后一行首
3 vi +/pattern file 打开文件,并将光标置于第一个与pattern匹配的字符串
4 vi +?pattern file 编辑工作从匹配pattern的最后一行开始
5 vi -r file (-r 即recover,恢复)
4.4 写入文件
常用命令:
1 :w 将数据写入到原始文件
2 :w file 将数据写入到指定文件
3 :w >> file 将数据追加到指定文件
4 :r [filename] 在编辑的数据中,读取另一个档案的数据,亦将档案内容加到游标所在行的后面
5 :n1,n2 w [filename] 将n1到n2的内容存储成另一个档案。
4.5 退出文件、停止vi
常用命令:
1 :q 退出文件
2 :q! 不保存数据,强制退出
3 :wq 保存退出文件
4 shift+ZZ 停止vi
5 ZQ 无条件退出
4.6 vi与vim命令行常用选项
-b 以二进制模式编辑文件
-c command 启动后立即运行给定的ex命令
-d 以diff模式运行
-o[num] 启动vim时打开num个窗口
-O[num] 启动vim时打开num个水平排列
-r 恢复模式
-R 于只读模式中编辑文件
-t tag 编辑包含tag的文件,并将光标置于tag位置
-T type 设置可选终端类型
5 插入
输入模式:
操作键
说明
i
在当前光标位置前插入数据
a
在当前光标位置后插入数据
I
在当前行开头处插入数据
A
在当前行末尾处插入数据
o
在当前行下面出入一行
O
在当前行上面插入一行
6 移动和跳转
6.1获取光标当前位置
获取方式:^G
6.2 缓冲区移动
操作键
说明
^F
向下移动一屏
^B
向上移动一屏
n^F
向下移动n屏
n^B
向上移动n屏
^D
向下移动半屏
^U
向上移动半屏
n^D
向下移动n行
n^U
向上移动n行
^E
向屏幕顶端多滚动一行
^L
向屏幕底端多滚动一行
zENTER
将光标所在的行移动到屏幕顶端
z.
将光标所在的行移动到屏幕中间
z-
将光标所在的行移动到屏幕底端
6.3 光标移动
操作键
说明
h
将光标向左移动一个位置
j
将光标向下移动一个位置
k
将光标向上移动一个位置
l
将光标向右移动一个位置
-
将光标移动到上一行的开头
-
将光标移动到下一行的开头
^
将光标移动到当前行的第一个非空格/制表符的字符上
数字0
将光标移动到当前行的开始
$
将光标移动到当前行的末尾
w W
将光标移动到下一个单词的词首(大写字母,略过空格)
e E
将光标移动到下一个单词的词尾(大写字母,略过空格)
b B
将光标移动到上一个单词的词首(大写字母,略过空格)
)
向前移动到下一个句子
(
向后移动到上一个句子
{
向前移动到下一个段落
}
向后移动到上一个段落
H
将光标移动到屏幕顶部
M
将光标移动到屏幕中间
L
将光标移动到屏幕的最后一行
fcharacter
单字符搜索移动(f为搜索命令,character为要搜索的字符)
Fcharacter
单字符左方向搜索移动
%
已匹配一个括号为目的的移动
说明:
1.命令计数:在移动命令前加数字,如3j,可实现向下移动三行。
语法:ncommand (n为数字,command为移动命令)
- 规律:一个命令的大写字母形式会做同样的事情,但是方向相反。
6.4 行号跳转
显示行号: :set number
关闭行号: :set nonumber
命令
说明
nG 、 :n
跳转到第n行
1G 、 gg 、 :1
跳转到编辑缓冲区的第一行
G 、 :$
跳转到编辑缓冲区最后一行
附加:
另一个移动到某行的办法是:在命令 % 前加一个命令计数,如 50% 会把光标定位在文件中间。
6.5 跳转到前一位置
返回前一位置:
a) “(两个反引号)
b) ‘’(两个单引号)
6.6 使用名称标示任意行,进行跳转
用不可见的名称标识任意行,当需要时使用此名称跳转到这一行。
可以键入m标示这一行,后跟一个字母,这个字母就是这一行的名称。例如:用”b“标示这一行,可以键入mb。为了跳转到这一行,可以键入一个反引号或单引号,后面跟这一行的名称。如:`b 或 ’b
7 搜索
7.1搜索常用命令
向前搜索: /
向后搜索: ?
常用命令:
1 / 向前重复搜索
2 ? 向后重复搜索
3 /regex 向前搜索指定的正则表达式
4 ?regex 向后搜索指定的正则表达式
5 n 重复上一条/或?命令,搜索方向相同
6 N 重复上一条/或?命令,搜索方向相反
附:
命令历史记录:用上下箭头来查找用过的搜索
7.2查找字符串便捷方式
命令 : 将光标定位于字符串,按下键,vi将会取当前光标所在的字符串并将它作用目标字符串进行搜索。
命令: 与*相反。
%:搜索与当前花括号、圆括号、方括号成对的符号。
7.3 查找整个字符串
方法:
使用\< >进行匹配。
例子:/\