vi编辑器linux命令大全
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为移动命令)
2. 规律:一个命令的大写字母形式会做同样的事情,但是方向相反。
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 查找整个字符串
方法:
使用\< \>进行匹配。
例子:/\
8 文本改动
8.1替换之vi命令
r:精确替换一个字符(不进入输入模式)。
R:替换多个字符(以覆盖方式替换)。(先将光标移动到希望开始替换的位置,然后输入R。切换到输入模式,随后键入的每个字符都将替换当前行上的一个字符。)
s:允许使用多个字符替换一个单个的字符(以插入方式替换)。
C:允许替换从当前光标位置到本行末尾的所有字符。
S 或 cc:以插入方式替换当前整行。
cmove:以插入方式从当前光标处替换到move所给出的位置处。
8.2替换之ex命令_常用方法
ex命令:
语法::s/pattern/replace/ 其中,pattern是替换的模式,replace是替换的文本。
使用方法总结:
1 :s/pattern/replace/ 替换当前行
2 s/pattern/replace/g 替换当前行所有
3 :lines/pattern/raplace/ 替换指定行
4 :line,lines/pattern/replace/ 替换指定范围内的行
5 :%s/pattern/replace/ 替换所有行
6 :.,$s/pattern/replace/g 从当前行末尾至编辑缓冲区的末尾进行相同的替换
7 :line,.s/pattern/replace/g 从编辑缓冲区的指定位置到当前行进行相同的替换
说明 :
1 所有的ex命令都以:开头。
2 :s只替换当前行上该模式的第一个匹配项。
3 为了替换所有匹配项,需在该命令的末尾键入字母g。例如::s/UNIX/linux/g
4 替换前进行确认,可在命令末尾添加c。例如::s/UNIX/linux/cg
5 .点号代表当前行。$代表缓冲区最后一行。%代表编辑缓冲区内所有的行。
8.3 交换字符
交换两个字符的位置: xp
交换两行的位置:ddp
调换两个单词(光标开始处于第一个单词的左边):deep
9、删除
9.1 删除命令
vi命令 | 操作键 |
x | 删除当前光标处的字符 |
X | 删除光标左边的字符 |
D | 删除从当前光标到本行末尾的字符 |
J | 删除两行之间的换行符 (亦可用于合并两行) |
dmove | 删除从当前光标到move所给位置的字符 |
dd | 删除当前行 |
ex命令 | |
:lined | 删除指定行 |
:line,lined | 删除指定范围内的行 |
9.2 常用的删除组合命令
说明:操作符命令+位移命令
1 nx 删除多个字符(n为删除的字符个数)
2 dw 删除1个单词
3 d10w 删除10个单词
4 d10W 删除10个单词,忽略标点符号。
5 db 向后删除一个单词
6 d2) 删除两个句子
7 d5} 删除5个段落
8 dG 或 :.,$d 删除当前行到编辑缓冲区末尾的所有行
9 dgg 或 d1G 或:1,.d 删除当前行到编辑缓冲区开头的所有行
10 :1,$d 或 :%f 删除整个编辑缓冲区
11 d/word 删除从光标所在位置到单词word的所有文本
12 .,/word/d 删除从光标所在位置到单词word的所有文本
13 df x 删除至当前行中x所在的位置
14 d^ 删除至该行的开始处
9.3插入模式中删除操作
^U 删除当前行
^H 删除前一个字符
^W 删除前一个词
9.4 撤销或重复改变
vi命令:
1 u 撤销上一命令对编辑缓冲区的修改
2 U 恢复当前行(即一次撤销对当前行的全部操作)
3 .点号 重复上一命令对编辑缓冲区的修改
9.5 恢复删除
语法:"1p(P)
说明:
1 1为缓冲区的编号。
2 p在当前行的下面插入,P在当前行的上面插入。
9.6 复制上一次删除
命令 | 说明 |
p | 复制上一次删除的内容,插入到光标的后面/下面 |
P | 复制上一次删除的内容,插入到光标的前面/上面 |
10 复制
10.1 接出(复制单词、句子、段落)
当在不删除文本的情况下将文本复制到无名缓冲区时,称为接出(yank)。(因此将命令命名为y、yy、Y)。
步骤:
1 使用y、yy、Y将文本由编辑缓冲区复制到无名缓冲区中,但不删除原始文本。
2 将光标移动到希望插入文本的位置。
3 使用P或p命令执行插入。
常用命令 | 操作键 |
yw | 接出一个单词 |
y10w | 接出10个单词 |
y10W | 接出10个单词,忽略标点符号 |
yb | 向后接出一个单词 |
y2) | 接出两个句子 |
y2} | 接出5个段落 |
yy | 接出一行 |
10yy | 接出10行 |
y$ | 接出从当前字符到本行末尾的的文本 |
y0 | 接出从当前字符到这一行开头之间的文本 |
10.2 复制与移动行
语法:
:x,ycoz
:x,ymz
说明:
1 x,y,z都是行号。x,y是源行,z是目标行号。
2 源行x,y被复制或移动,插入到z行的下面。
3 :m删除原始行,:co不删除原始行。
例子:
1 :2co4 复制第2行,插入到第4行下面
2 :2,4co8 复制第2行到第4行,插入到第8行下面
3 :2m4 移动第2行,插入到第4行下面
4 :2,4m8 移动第2行到第4行,插入到第8行下面。
11 使用缩写
要为经常使用的单词或表达式创建缩写,可使用:ab命令。
1 创建缩写,语法::ab [ short long ]
2 删除缩写,语法: :una short
12 命令补全与文本补全
命令补全:Tab
关键字补全:^N ^P
13 shell命令
14.1 执行shell命令
1 :!command 暂停vi,执行制定的shell命令
2 :!! pause vi 执行上一条shell命令
3 :sh 暂停vi,启动一个新的shell
4 :!csh 暂停vi,启动一个新的c-shell
14.2 使用shell命令处理数据
1 n!! command 对n行数据执行command
2 !move command 对当前光标至move所指定的位置的数据执行command
3 !move fmt 格式化当前光标到move所指定的行
15、显示与设置选项
15.1 显示选项
1 语法: :set [option]
2 显示所有选项的值: :set all
3 显示一个选项的值: :set option?
15.2 设置选项
语法::set [no]option..... :set option[=value]...
15.3常用设置命令
设置行号显示与否: 简写 :set nu / :set no nu
设置自动缩进: 简写 :set ai / :set no ai
设置缩进宽度: 简写 :set sw=4
设置大小写忽略与否: 简写 :set ic / :set no ic
16、初始化文件与配置文件
16.1初始化文件
vi的初始化文件:.exrc
vim的初始化文件:vimrc
16.2配置文件
linux配置文件: /usr/share/vim/vimrc
查找Windows配置文件: scriptnames
在UNIX系统中,创建和修改配置文件、shell脚本、初始化文件、编写程序都离不开VI。
1.
vi#
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 输入模式和命令模式
命令模式#(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命令结束,必须按下<Return>键盘。
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 -Cfile以兼容模式启动vi
4.2编辑多个文件
语法:vi a.txt b.txt c.txt
切换文件: :next
5 系统意外时数据的恢复
在编辑文件的过程中,如果遭遇系统意外,vi通常可以将数据恢复出来。
命令:vi -r file(-r 即recover,恢复)
如:vi -r test.txt
6 搜索
6.1搜索常用命令
向前搜索: /
向后搜索: ?
常用命令:
1.
/向前重复搜索
2.
?向后重复搜索
3.
/regex向前搜索指定的正则表达式
4.
?regex向后搜索指定的正则表达式
5.
n重复上一条/或?命令,搜索方向相同
6.
N重复上一条/或?命令,搜索方向相反
附:
命令历史记录:用上下箭头来查找用过的搜索
6.2查找字符串便捷方式
*命令 : 将光标定位于字符串,按下*键,vi将会取当前光标所在的字符串并将它作用目标字符串进行搜索。
#命令: 与*相反。
6.3 查找整个字符串
方法:
使用\< \>进行匹配。
例子:/\<word\>
7 移动和跳转
7.1获取光标当前位置
获取方式:^G
7.2 缓冲区移动
操作键
说明
^F
向下移动一屏
^B
向上移动一屏
n^F
向下移动n屏
n^B
向上移动n屏
^D
向下移动半屏
^U
向上移动半屏
n^D
向下移动n行
n^U
向上移动n行
7.3 光标移动
操作键
说明
h <Left>
将光标向左移动一个位置
j <Down>
将光标向下移动一个位置
k <Up>
将光标向上移动一个位置
l <Right>
将光标向右移动一个位置
-
将光标移动到上一行的开头
+ <Return>
将光标移动到下一行的开头
^
将光标移动到当前行的第一个非空格/制表符的字符上
数字0
将光标移动到当前行的开始
$
将光标移动到当前行的末尾
w W
将光标移动到下一个单词的词首(大写字母,略过空格)
e E
将光标移动到下一个单词的词尾(大写字母,略过空格)
b B
将光标移动到上一个单词的词首(大写字母,略过空格)
)
向前移动到下一个句子
(
向后移动到上一个句子
{
向前移动到下一个段落
}
向后移动到上一个段落
H
将光标移动到屏幕顶部
M
将光标移动到屏幕中间
L
将光标移动到屏幕的最后一行
fcharacter
单字符搜索移动(f为搜索命令,character为要搜索的字符)
Fcharacter
单字符左方向搜索移动
%
已匹配一个括号为目的的移动
说明:
1.命令计数:在移动命令前加数字,如3j,可实现向下移动三行。
语法:ncommand(n为数字,command为移动命令)
2. 规律:一个命令的大写字母形式会做同样的事情,但是方向相反。
7.4 行号跳转
显示行号::set number
关闭行号::set nonumber
命令
说明
nG 、 :n
跳转到第n行
1G 、 gg 、 :1
跳转到编辑缓冲区的第一行
G 、 :$
跳转到编辑缓冲区最后一行
附加:
另一个移动到某行的办法是:在命令 % 前加一个命令计数,如 50% 会把光标定位在文件中间。
7.5 跳转到前一位置
返回前一位置:
1.
``(两个反引号)
2.
‘’(两个单引号)
7.6 使用名称标示任意行,进行跳转
用不可见的名称标识任意行,当需要时使用此名称跳转到这一行。
可以键入m标示这一行,后跟一个字母,这个字母就是这一行的名称。例如:用”b“标示这一行,可以键入mb。为了跳转到这一行,可以键入一个反引号或单引号,后面跟这一行的名称。如:`b 或 ’b
8 插入
输入模式:
操作键
说明
i
在当前光标位置前插入数据
a
在当前光标位置后插入数据
I
在当前行开头处插入数据
A
在当前行末尾处插入数据
o
在当前行下面出入一行
O
在当前行上面插入一行
9 写入与退出
9.1 写入文件
常用命令:
1.
:w将数据写入到原始文件
2.
:w file将数据写入到指定文件
3.
:w >> file 将数据追加到指定文件
9.2 退出文件、停止vi
常用命令:
1.
:q退出文件
2.
:q!不保存数据,强制退出
3.
:wq保存退出文件
4.
shift+ZZ停止vi
5.
ZQ无条件退出
10 文本改动
10.1替换之vi命令
r:精确替换一个字符(不进入输入模式)。
R:替换多个字符(以覆盖方式替换)。(先将光标移动到希望开始替换的位置,然后输入R。切换到输入模式,随后键入的每个字符都将替换当前行上的一个字符。)
s:允许使用多个字符替换一个单个的字符(以插入方式替换)。
C:允许替换从当前光标位置到本行末尾的所有字符。
S 或 cc:以插入方式替换当前整行。
cmove:以插入方式从当前光标处替换到move所给出的位置处。
10.2替换之ex命令_常用方法
ex命令:
语法::s/pattern/replace/其中,pattern是替换的模式,replace是替换的文本。
使用方法总结:
1.
:s/pattern/replace/替换当前行
2.
s/pattern/replace/g替换当前行所有
3.
:lines/pattern/raplace/替换指定行
4.
:line,lines/pattern/replace/替换指定范围内的行
5.
:%s/pattern/replace/替换所有行
6.
:.,$s/pattern/replace/g从当前行末尾至编辑缓冲区的末尾进行相同的替换
7.
:line,.s/pattern/replace/g 从编辑缓冲区的指定位置到当前行进行相同的替换
说明 :
1.
所有的ex命令都以:开头。
2.
:s只替换当前行上该模式的第一个匹配项。
3.
为了替换所有匹配项,需在该命令的末尾键入字母g。例如::s/UNIX/linux/g
4.
替换前进行确认,可在命令末尾添加c。例如::s/UNIX/linux/cg
5.
.点号代表当前行。$代表缓冲区最后一行。%代表编辑缓冲区内所有的行。
11 删除
11.1 删除命令
vi命令
操作键
x
删除当前光标处的字符
X
删除光标左边的字符
D
删除从当前光标到本行末尾的字符
J
删除两行之间的换行符 (亦可用于合并两行)
dmove
删除从当前光标到move所给位置的字符
dd
删除当前行
ex命令
:lined
删除指定行
:line,lined
删除指定范围内的行
11.2 常用的删除组合命令
说明:操作符命令+位移命令
1.
nx 删除多个字符(n为删除的字符个数)
2.
dw 删除1个单词
3.
d10w删除10个单词
4.
d10W删除10个单词,忽略标点符号。
5.
db向后删除一个单词
6.
d2)删除两个句子
7.
d5}删除5个段落
8.
dG 或 :.,$d删除当前行到编辑缓冲区末尾的所有行
9.
dgg 或 d1G 或:1,.d删除当前行到编辑缓冲区开头的所有行
10.
:1,$d 或 :%f删除整个编辑缓冲区
11.3 撤销或重复改变
vi命令:
1.
u撤销上一命令对编辑缓冲区的修改
2.
U恢复当前行(即一次撤销对当前行的全部操作)
3.
.点号重复上一命令对编辑缓冲区的修改
11.4 恢复删除
语法:"1p(P)
说明:
1.
1为缓冲区的编号。
2.
p在当前行的下面插入,P在当前行的上面插入。
11.5 复制上一次删除
命令
说明
p
复制上一次删除的内容,插入到光标的后面/下面
P
复制上一次删除的内容,插入到光标的前面/上面
xp
调换两个字符
deep
调换两个单词(光标开始处于第一个单词的左边)
ddp
调换两行
12 复制
12.1 接出(复制单词、句子、段落)
当在不删除文本的情况下将文本复制到无名缓冲区时,称为接出(yank)。(因此将命令命名为y、yy、Y)。
步骤:
•
使用y、yy、Y将文本由编辑缓冲区复制到无名缓冲区中,但不删除原始文本。
•
将光标移动到希望插入文本的位置。
使用P或p命令执行插入。
常用命令
操作键
yw
接出一个单词
y10w
接出10个单词
y10W
接出10个单词,忽略标点符号
yb
向后接出一个单词
y2)
接出两个句子
y2}
接出5个段落
yy
接出一行
10yy
接出10行
y$
接出从当前字符到本行末尾的的文本
y0
接出从当前字符到这一行开头之间的文本
12.2 复制与移动行
语法:
:x,ycoz
:x,ymz
说明:
1.
x,y,z都是行号。x,y是源行,z是目标行号。
2.
源行x,y被复制或移动,插入到z行的下面。
3.
:m删除原始行,:co不删除原始行。
例子:
1.
:2co4复制第2行,插入到第4行下面
2.
:2,4co8复制第2行到第4行,插入到第8行下面
3.
:2m4移动第2行,插入到第4行下面
4.
:2,4m8移动第2行到第4行,插入到第8行下面。
13 使用缩写
要为经常使用的单词或表达式创建缩写,可使用:ab命令。
1.
创建缩写,语法::ab [ short long ]
2.
删除缩写,语法: :una short
14 shell命令
14.1 执行shell命令
1.
:!command暂停vi,执行制定的shell命令
2.
:!! pause vi执行上一条shell命令
3.
:sh暂停vi,启动一个新的shell
4.
:!csh暂停vi,启动一个新的c-shell
14.2 使用shell命令处理数据
1.
n!! command对n行数据执行command
2.
!move command对当前光标至move所指定的位置的数据执行command
3.
!move fmt格式化当前光标到move所指定的行
15 显示与设置选项
15.1 显示选项
1.
语法: :set [option]
2.
显示所有选项的值: :set all
3.
显示一个选项的值: :set option?
15.2 设置选项
语法::set [no]option.....:set option[=value]...
15.3常用设置命令
1.
设置行号显示与否:简写 :set nu / :set no nu
2.
设置自动缩进:简写 :set ai / :set no ai
3.
设置缩进宽度:简写 :set sw=4
4.
设置大小写忽略与否:简写 :set ic / :set no ic
16 初始化文件与配置文件
16.1初始化文件
vi的初始化文件:.exrc
vim的初始化文件:vimrc
16.2配置文件
linux配置文件:/usr/share/vim/vimrc
查找Windows配置文件: :scriptnames
17 vi术语
编辑缓冲区(editing buffer ):存放数据的存储区域。
编号缓冲区(numbered buffer):每当删除一行或多行文本时,vi都将删除内容保存在一个特殊的存储区内,这个存储区称为编号缓冲区。vi有9个这样的缓冲区。
无名缓冲区(unnamed buffer):vi为上一次删除保存一份副本的区域。
命令模式#(command mode):所键入的键都被解释成命令。
输入模式(input mode):键入的任何内容都直接插入到编辑缓冲区中。
18 在线资料
vim官网:http://www.vim.org/
FreeBSD vi:http://www.dc.fi.udc.es/~afyanez/info-vi/man-page.html
vim中文文档:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
vim作者个人网站:http://www.moolenaar.net/
vim手册中文版:http://sourceforge.net/projects/vimcdoc/
vi-ex:http://ex-vi.sourceforge.net/
vi:http://thomer.com/vi/vi.html
非常好vim学习网站:http://www.openvim.com/
图形化vi-vim小抄:http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
vim配置文件:http://amix.dk/vim/vimrc.html
史上最强vim配置文件:http://blog.csdn.net/redguardtoo/article/details/1172136
vi正则表达式:http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml
神奇的vi:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip15/
vim资料:http://wiki.hotoo.me/Vim.html
vi-vim book:http://search.oreilly.com/?q=vi+vim&x=-873&y=-56
O’Reilly:http://books.google.com/books?id=J5nKVVg5YHAC&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=UcVRUeCPKs-viQew54CwDQ&ved=0CC8Q6AEwAA#v=onepage&q&f=false
O’Reilly:http://books.google.com/books?id=YQXfIbb0cJ8C&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=s8VRUc2VO8SViAeB9YGYBA&ved=0CDoQ6AEwAQ
linux系统vi命令详解
来源:niutuku.com | vincent上传于2012-07-20 | 1513次浏览 | 0条评论
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi
标签:详解 命令 系统 光标 文件 当前 一个 vi 字符 n1 删除
进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename :打开多个文件,依次进行编辑
移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行
删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本
搜索及替换命令
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行
寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。