ITPub博客

首页 > Linux操作系统 > Linux操作系统 > vi命令

vi命令

Linux操作系统 作者:SDYTXM 时间:2014-01-04 01:08:14 0 删除 编辑

在命令状态下,在某一行上按"J"键将Join下一行。

进入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号删除寄存器中

VI命令格式: 
[命令] (文本) 
[命令] (数字)(文本) 
(数字)[命令] (文本)
基本命令:i a c d y p u x w q o r s
vi [filename] 打开一个指定文件
基本文本处理
i 在当前光标前插入文本 
I 在行首插入文本 
a 在当前光标后插入文本 
A 在行尾插入文本 
O 在当前行前插入一行 
o 在当前行后插入一行
x 删除当前光标字符 
xw 删除单词 
x$ 删除到行尾 
x0 删除到行首 
5x 删除5个字符
0 光标移动到当前行第一个字符 
$ 光标移动到当前行最后一个字符 
h 光标左移一个空格 
l 光标右移一个空格 
j 光标下移一行 
k 光标上移一行 
w|W 光标前移一个单词 
b|B 光标后移一个单词 
p 粘贴 
移动或复制文本可以通过先删除(dd),然后粘贴(p)的方法实现,如dd删除一行,p粘贴改行,x删除字符,p粘贴字符。
c | C 修改文本 
cw 修改单词,并插入 
c$ 修改到行尾 
c0 修改到行首 
cc 替换当前行
d |D 删除字符 
dw 删除单词 
d$ 删除到行尾 
dd 删除当前行
r|R 替换当前文本 
S 替换当前行 
s 替换字符 
~ 字母大小写转换
y | Y 复制文本 
yw 复制单词 
y$ 复制到行尾 
y0 复制到行首 
yy 复制一行 
4yy 复制4行
. 重复操作 
u 撤销上一次操作 
U 撤销改行任何操作 
J 合并当前行与下一行 
参数可以带数字使用,如4h左移4个空格, 50i* 插入50个*
/ | n 向前搜索 
? | N 向后搜索 
^F 向前滚一屏 
^B 向后滚一屏 
^D 向前滚半屏 
^U 向后滚半屏 
^L 刷新屏幕
编辑命令扩展
vi + [file] 打开文件到最后一行 
vi -r [file] 系统崩溃后恢复文件 
vi +n [file] 打开文件到第n行 
vi +/pattern [file] 打开文件到模式首次出现的地方 
vi -R 以只读模式打开文件 
//1-9 前9次删除操作 
vi编辑器中可以CTRL+Z挂起vi,返回Unix shell状态,进行其他工作,unix shell中的fg 命令可以使当前工作返回第一个挂起的vi窗口
ex行编辑器
vi中,在ex行命令可以用!调用unix系统命令,如!ls, 列出当前目录的所有文件,!df 察看当前硬盘使用情况。 
ex命令由行号和命令组成,以回车键结束。 
:1 到第一行 
:1,3 打印1~3行 
:$ 到最后一行 
:shift + G 到最后一行 
:p 恢复缓冲区的内容(如:1p :3p) 
:s/screen/line 替换当前行第一个screen 为 line 
:1,3 s/screen/l 替换1~3行的screen为l 
Q 进入ex编辑命令模式 
vi 返回vi编辑器 
:delete|d 删除 
:copy |co|t copy 并粘贴 copy的内容 
:move [行号]|m move到指定行 
:23,29co100 复制23~29行并把他们粘贴到100行的后面 
:set nu 显示行号 
:= 显示总行号 
:.= 先是当前行行号
行地址符号 
. 当前行 
$ 最后以行 
% 文件每一行(1,$) 
+ 向后 
- 向前 
:.+20# 先是从当前行向后20行的行号
:g 全局搜索 
:g/pattern 搜索符合模式的行 
:g!/patterhn 搜索不符合模式的行
:w 保存但不退出. 
:w [newfile] 将当前修改保存到新文件. 
:wq || ZZ 保存退出. 
:e 不保存当前修改,回到初始版本文件. 
:q 退出不保存. 
写文件并推出编辑器 
:1,10w>> [newfile] 使用>>重定向添加符 和w 把内容追加到文件 
:read [file] 读取系统中现有文件数据 
:r [file] 
:0r [file] 将要读取的文件放到当前文件的开始 
:12r [file] 将要读取的文件放到当前文件的12行后
vi可以打开多个文件,通过ex命令在文件间切换,如vi temp test, 通过:vi temp, :vi test切换到不同文件,:n命令可以调用另一个文件
:g | :s 全局替换 
/g 在当前行全局替换 
:s/old/new/g 当前行全局替换old字符为new 
:1,$s/old/new/g 全局替换 
:1,50s/old/new/g 替换1~50行 
:gc 确认替换,y 替换 
n 重复搜索 
%s/editer/editor/g == :g/editer/s//editor/g 
grep/sed/awk 正则表达 
. 匹配单字符 
* 匹配其前面的单个字符的0个或多个实例:bugs* == bug | bugs 
*. 匹配任何数量的任何字符 
^ 用于正则表达式的开始 
$ 
\ 将后面的字符视为普通字符:\* == * 
[] 匹配所包含字符的任何一个:p[aeiout]r == par | per.... 
:g/^$/d 删除所有空行 
\U 替换字符为大写 
& 重复替换
Advanced vi command
:set option 设置选项 
:set nooption 关闭选项设置 
:set all 显示所有选项 
:set ic 指定模式搜索忽略大小写 
:set noic 不忽略 
.exrc文件 控制vi环境的exrc文件位于主目录下(首次登陆时所在的目录),可以用vi编辑器修改.exrc文件 
:so sourcefile 可以调用sourcefile中的选项设置
编程选项
:set autoindent 自动缩进 
CTRL+D 取消一个缩进级别(插入模式) 
CRTL+T 实现另一个缩进级别(插入模式) 
>> 行右移(缺省8空格--实际上将制表符插入到文本中) 
<< 行左移8空格 
5>> 移动该段落中前5行 
:set shiftwidth=4 该选项可以更改缺省缩进的空格数目 
:set tabstop=4 设置tab制表符号的字符数目 
:set list 设置制表符显示为^I,行尾显示为$,通常屏幕中制表符和空白均显示为空白。 
:set showmatch 设置搜索技巧 
tabstop 
shiftwidth 
number 
list 
autowrite 设置后,调用:n(下一个)命令移动到下一个文件编辑时,:! 运行shell命令之前将自动写出已修改的缓冲区内容 
:![command] 执行unix命令 
:!date 显示时间 
:!sort 排序文件 
:ab 单词缩写 
:unab 单词缩写失效 
:map 列出当前映射的所有字符 
:map x sequence 映射x为sequence编辑命令 
:unmap x 取消映射
ex特殊键: 
^ CTRL+V 
^M 回车 
^[ ESC 
^H Backspace 
^I tab 
"... 双引号标记ex注释行,
VIM -- Vi Improved 

==========================================================================

VI中命令区分大小写,工作模式分为插入与命令模式,命令模式包括基本命令和ex编辑命令,ex编辑命令一般出现在屏幕下方,由:引出。
VI命令格式: 
[命令] (文本) 
[命令] (数字)(文本) 
(数字)[命令] (文本)
基本命令:i a c d y p u x w q o r s
vi [filename] 打开一个指定文件
基本文本处理
i 在当前光标前插入文本 
I 在行首插入文本 
a 在当前光标后插入文本 
A 在行尾插入文本 
O 在当前行前插入一行 
o 在当前行后插入一行
x 删除当前光标字符 
xw 删除单词 
x$ 删除到行尾 
x0 删除到行首 
5x 删除5个字符
0 光标移动到当前行第一个字符 
$ 光标移动到当前行最后一个字符 
h 光标左移一个空格 
l 光标右移一个空格 
j 光标下移一行 
k 光标上移一行 
w|W 光标前移一个单词 
b|B 光标后移一个单词 
p 粘贴 
移动或复制文本可以通过先删除(dd),然后粘贴(p)的方法实现,如dd删除一行,p粘贴改行,x删除字符,p粘贴字符。
c | C 修改文本 
cw 修改单词,并插入 
c$ 修改到行尾 
c0 修改到行首 
cc 替换当前行
d |D 删除字符 
dw 删除单词 
d$ 删除到行尾 
dd 删除当前行
r|R 替换当前文本 
S 替换当前行 
s 替换字符 
~ 字母大小写转换
y | Y 复制文本 
yw 复制单词 
y$ 复制到行尾 
y0 复制到行首 
yy 复制一行 
4yy 复制4行
. 重复操作 
u 撤销上一次操作 
U 撤销改行任何操作 
J 合并当前行与下一行 
参数可以带数字使用,如4h左移4个空格, 50i* 插入50个*
/ | n 向前搜索 
? | N 向后搜索 
^F 向前滚一屏 
^B 向后滚一屏 
^D 向前滚半屏 
^U 向后滚半屏 
^L 刷新屏幕
编辑命令扩展
vi + [file] 打开文件到最后一行 
vi -r [file] 系统崩溃后恢复文件 
vi +n [file] 打开文件到第n行 
vi +/pattern [file] 打开文件到模式首次出现的地方 
vi -R 以只读模式打开文件 
//1-9 前9次删除操作 
vi编辑器中可以CTRL+Z挂起vi,返回Unix shell状态,进行其他工作,unix shell中的fg 命令可以使当前工作返回第一个挂起的vi窗口
ex行编辑器
vi中,在ex行命令可以用!调用unix系统命令,如!ls, 列出当前目录的所有文件,!df 察看当前硬盘使用情况。 
ex命令由行号和命令组成,以回车键结束。 
:1 到第一行 
:1,3 打印1~3行 
:$ 到最后一行 
:shift + G 到最后一行 
:p 恢复缓冲区的内容(如:1p :3p) 
:s/screen/line 替换当前行第一个screen 为 line 
:1,3 s/screen/l 替换1~3行的screen为l 
Q 进入ex编辑命令模式 
vi 返回vi编辑器 
:delete|d 删除 
:copy |co|t copy 并粘贴 copy的内容 
:move [行号]|m move到指定行 
:23,29co100 复制23~29行并把他们粘贴到100行的后面 
:set nu 显示行号 
:= 显示总行号 
:.= 先是当前行行号
行地址符号 
. 当前行 
$ 最后以行 
% 文件每一行(1,$) 
+ 向后 
- 向前 
:.+20# 先是从当前行向后20行的行号
:g 全局搜索 
:g/pattern 搜索符合模式的行 
:g!/patterhn 搜索不符合模式的行
:w 保存但不退出. 
:w [newfile] 将当前修改保存到新文件. 
:wq || ZZ 保存退出. 
:e 不保存当前修改,回到初始版本文件. 
:q 退出不保存. 
写文件并推出编辑器 
:1,10w>> [newfile] 使用>>重定向添加符 和w 把内容追加到文件 
:read [file] 读取系统中现有文件数据 
:r [file] 
:0r [file] 将要读取的文件放到当前文件的开始 
:12r [file] 将要读取的文件放到当前文件的12行后
vi可以打开多个文件,通过ex命令在文件间切换,如vi temp test, 通过:vi temp, :vi test切换到不同文件,:n命令可以调用另一个文件
:g | :s 全局替换 
/g 在当前行全局替换 
:s/old/new/g 当前行全局替换old字符为new 
:1,$s/old/new/g 全局替换 
:1,50s/old/new/g 替换1~50行 
:gc 确认替换,y 替换 
n 重复搜索 
%s/editer/editor/g == :g/editer/s//editor/g 
grep/sed/awk 正则表达 
. 匹配单字符 
* 匹配其前面的单个字符的0个或多个实例:bugs* == bug | bugs 
*. 匹配任何数量的任何字符 
^ 用于正则表达式的开始 
$ 
\ 将后面的字符视为普通字符:\* == * 
[] 匹配所包含字符的任何一个:p[aeiout]r == par | per.... 
:g/^$/d 删除所有空行 
\U 替换字符为大写 
& 重复替换
Advanced vi command
:set option 设置选项 
:set nooption 关闭选项设置 
:set all 显示所有选项 
:set ic 指定模式搜索忽略大小写 
:set noic 不忽略 
.exrc文件 控制vi环境的exrc文件位于主目录下(首次登陆时所在的目录),可以用vi编辑器修改.exrc文件 
:so sourcefile 可以调用sourcefile中的选项设置
编程选项
:set autoindent 自动缩进 
CTRL+D 取消一个缩进级别(插入模式) 
CRTL+T 实现另一个缩进级别(插入模式) 
>> 行右移(缺省8空格--实际上将制表符插入到文本中) 
<< 行左移8空格 
5>> 移动该段落中前5行 
:set shiftwidth=4 该选项可以更改缺省缩进的空格数目 
:set tabstop=4 设置tab制表符号的字符数目 
:set list 设置制表符显示为^I,行尾显示为$,通常屏幕中制表符和空白均显示为空白。 
:set showmatch 设置搜索技巧 
tabstop 
shiftwidth 
number 
list 
autowrite 设置后,调用:n(下一个)命令移动到下一个文件编辑时,:! 运行shell命令之前将自动写出已修改的缓冲区内容 
:![command] 执行unix命令 
:!date 显示时间 
:!sort 排序文件 
:ab 单词缩写 
:unab 单词缩写失效 
:map 列出当前映射的所有字符 
:map x sequence 映射x为sequence编辑命令 
:unmap x 取消映射
ex特殊键: 
^ CTRL+V 
^M 回车 
^[ ESC 
^H Backspace 
^I tab 
"... 双引号标记ex注释行,
VIM -- Vi Improved 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20985606/viewspace-1066995/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORA-00265故障分析
请登录后发表评论 登录
全部评论

注册时间:2012-04-02

  • 博文量
    41
  • 访问量
    217401