频道栏目
首页 > 资讯 > Linux > 正文

vi-vim常用命令

17-08-01        来源:[db:作者]  
收藏   我要投稿

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 查找整个字符串

方法:

使用\< >进行匹配。

例子:/\

相关TAG标签
上一篇:01二维矩阵中最大全为1的正方形maxSquare
下一篇:【Codeforces Round #427 (Div. 2) D】Palindromic characteristics
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站