vi编辑器linux命令大全

作者:xiaoru  出处:本站整理  发布时间:2013-04-29 13:20:23

-
    vi就是linux命令行下的最著名的编辑器之一,Vim常被称作“程序员的编辑器”,其功能如此强大以致许多人认为它就是个完整的IDE。不过现 在实际使用的都是vim,它是vi的改进版本,所以现在的vi基本上就是vim了。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛 使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

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命令结束,必须按下键盘。

第 2 页 启动与编辑vi-vim

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              设置可选终端类型

第 3 页 插入、移动和跳转

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

第 4 页 搜索及文本改动

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

第 5 页 删除和复制

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行下面。

第 6 页  使用缩写、命令补全与文本补全

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所指定的行

第 7 页  显示与设置选项和初始化与配置文件

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

  

vi-11的更多相关文章

  1. shell编程练习(二): 笔试11-20

    笔试练习(二): 11.写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录. [root@VM_0_5_centos test]# vi 11.sh [root@VM_0_5_cento ...

  2. 普林斯顿数学指南(第三卷) (Timothy Gowers 著)

    第V部分 定理与问题 V.1 ABC猜想 V.2 阿蒂亚-辛格指标定理 V.3 巴拿赫-塔尔斯基悖论 V.4 Birch-Swinnerton-Dyer 猜想 V.5 卡尔松定理 V.6 中心极限定理 ...

  3. Kick Start 2019 Round H. Elevanagram

    设共有 $N = \sum_{i=1}^{9} A_i$ 个数字.先把 $N$ 个数字任意分成两组 $A$ 和 $B$,$A$ 中有 $N_A = \floor{N/2}$ 个数字,$B$ 中有 $N ...

  4. 地区sql

    /*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...

  5. 11 个很少人知道但很有用的 Linux 命令

    Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有 ...

  6. Linux 6.5(oracle 11.2.0.4)单实例ASM安装

    Linux 6.5(oracle 11.2.0.4) 1.解析主机.配置网络等 /etc/hosts /etc/sysconfig/network /etc/init.d/NetworkManager ...

  7. vi安装Vundle+YouCompleteMe+注释快捷'scrooloose/nerdcommenter'

    Vundle is short for Vim bundle and is a Vim plugin manager. 从git上下载vundle $ git clone https://github ...

  8. RHEL6.5安装11.2.0.3 RAC并打补丁

    [TOC] 一,主机配置 1.修改hosts文件(两节点) #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.local ...

  9. oracle 11.2.0.4单实例文件系统安装与补丁

    [TOC] 一,预安装处理 1.版本准备 操作系统:RHEL 6.5 数据库版本:Oracle 11.2.0.4 相关包:p13390677_112040_Linux-x86-64_1of7.zip  ...

  10. centos+scala2.11.4+hadoop2.3+spark1.3.1环境搭建

    一.Java安装 1.安装包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads- ...

随机推荐

  1. javascript滚动条之ScrollBar.js

    ScrollBar.js是一个仅仅120行的滚动条JS插件,使用非常方便 详情阅读:https://git.oschina.net/wuquanyao/scrollbar.js/*========== ...

  2. FineUI第三天----WebConfig的配置

    这张我们讲讲整个站点Web.config配置文件的配置 Theme: 控件主题,目前支持三种主题风格(blue/gray/access,默认值:blue) Language: 控件语言(en/zh_C ...

  3. HDU 2577 How to Type(dp题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577 解题报告:有一个长度在100以内的字符串,并且这个字符串只有大写和小写字母组成,现在要把这些字符 ...

  4. [Effective JavaScript 笔记] 第6条:了解分号插入的局限

    分号可以省略 js可以在语句结束不强制加分号.(建议还是添加,不添加分号往往会出现不易发现的BUG) function Point(x,y){ this.x=x||0; this.y=y||0; } ...

  5. [Effective JavaScript 笔记]第31条:使用Object.getPrototypeOf函数而不要使用__proto__属性

    ES5引入Object.getPrototypeOf函数作为获取对象原型的标准API,但由于之前的很多js引擎使用了一个特殊的__proto__属性来达到相同的目的.但有些浏览器并不支持这个__pro ...

  6. IOS AFNetworking

    http://www.coneboy.com/?p=716 AFNetworking 使用总结 (用法+JSON解析) 2013 年 4 月 11 日  No comments Article 这几天 ...

  7. Python机器学习库scikit-learn实践

    原文:http://blog.csdn.net/zouxy09/article/details/48903179 一.概述 机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所“熟知”,就算不懂得 ...

  8. OJ 1188 全排列---康托展开

    题目描述 求n的从小到大第m个全排列(n≤20). 输入 n和m 输出 输出第m个全排列,两个数之间有一空格. 样例输入 3 2 样例输出 1 3 2 #include<cstdio> # ...

  9. BZOJ 3540 realtime-update 解题

    分析一下题意,大约是给定一串牛,然后找到一个跨越距离最长的牛子串使得在这个范围内白牛和花牛一样多. 白牛可以任意涂成花牛. 既然"白牛可以任意涂成花牛",那么我们需要找到一个最长的 ...

  10. Linux命令之exit - 退出当前shell【返回值状态】

    原文链接:http://codingstandards.iteye.com/blog/836625   (转载请注明出处) 用途说明 exit命令用于退出当前shell,在shell脚本中可以终止当前 ...