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命令结束,必须按下<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 -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       <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. 规律:一个命令的大写字母形式会做同样的事情,但是方向相反。

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

方法:

使用\<  \>进行匹配。

例子:/\<word\>

8 文本改动

8.1替换之vi命令

r:精确替换一个字符(不进入输入模式)。

R:替换多个字符(以覆盖方式替换)。(先将光标移动到希望开始替换的位置,然后输入R。切换到输入模式,随后键入的每个字符都将替换当前行上的一个字符。)

s:允许使用多个字符替换一个单个的字符(以插入方式替换)。

C:允许替换从当前光标位置到本行末尾的所有字符。

 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常用设置命令

  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 在线资料

1      vim官网:http://www.vim.org/

2      FreeBSD vi:http://www.dc.fi.udc.es/~afyanez/info-vi/man-page.html

3      vim中文文档:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html

4      vim作者个人网站:http://www.moolenaar.net/

5      vim手册中文版:http://sourceforge.net/projects/vimcdoc/

6      vi-ex:http://ex-vi.sourceforge.net/

7      vi:http://thomer.com/vi/vi.html

8      非常好vim学习网站:http://www.openvim.com/

9      图形化vi-vim小抄:http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

10   vim配置文件:http://amix.dk/vim/vimrc.html

11   史上最强vim配置文件:http://blog.csdn.net/redguardtoo/article/details/1172136

12   vi正则表达式:http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml

13   神奇的vi:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip15/

14   vim资料:http://wiki.hotoo.me/Vim.html

15   vi-vim book:http://search.oreilly.com/?q=vi+vim&x=-873&y=-56

16   OReilly: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

17   OReilly:http://books.google.com/books?id=YQXfIbb0cJ8C&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=s8VRUc2VO8SViAeB9YGYBA&ved=0CDoQ6AEwAQ

vi-vim常用命令的更多相关文章

  1. VI/VIM 常用命令

    VI/VIM 常用命令=========== 整理自鸟哥的私房菜 ---------- - 移动光标 命令                    | 描述----------------------- ...

  2. vi/vim 常用命令总结

    目录 Linux vi/vim编辑 vim键盘图 vim的三种模式 命令模式.输入模式.输出模式 vim使用实例 vi/vim按键说明 第一部分:一般模式可用的光标移动.复制粘贴.搜索替换等 第二部分 ...

  3. Vi/Vim常用命令(附快捷切换方法)

    vi/vim有两种模式,正常(命令行)模式 和编辑模式,在命令行模式下,任何键盘输入都是命令,在编辑模式下,键盘输入的才是字符. 启动/关闭Vi/Vim 启动:vi 打开 Vi/Vim编辑器vi 文件 ...

  4. 【转】VI/VIM常用命令

    原文网址:http://www.blogjava.net/woxingwosu/archive/2007/09/06/125193.html Vi是“Visual interface”的简称,它在Li ...

  5. vi/vim常用命令总结

    vim是vi的升级模式,完全兼容vi 解决vim打开中文乱码问题 编辑/etc/vim/vimrc配置文件,添加下面的内容: ''' set fileencodings=utf-8,ucs-bom,g ...

  6. linux vi(vim)常用命令汇总(转)

    前言 首先解析一个vim vi是unix/linux下极为普遍的一种文本编辑器,大部分机器上都有vi的各种变种,在不同的机器上常用不同的变种软件,其中vim比较好用也用的比较广泛.vim是Vi Imp ...

  7. linux vi(vim)常用命令汇总

    1 查找 /xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找其中xxx可以是正规表达式,关于正规式就不多说了. 一般来说是区分大小写的, 要想不区分大 ...

  8. vi/vim 常用命令 之 一图定天下!

    直接上干活,一张图解决~

  9. Linux(Ubuntu)常用命令(五)—— vi/vim常用操作

    vi/vim常用命令 vim其实就是vi的升级版,vi里的所有命令vim里都可以用,一般使用来说几乎没什么差别. 注:本篇文章区分大小写! vi / vim三级模式的关系: 命令行模式 任何时候,不管 ...

  10. Vim常用命令总结

    Vim常用命令总结: 下文是小编自己整理的关于日常linux vim编程过程中用的一些常用命令,资料参考鸟哥的 如果有需要的小伙伴可以参考一下!(底部有下载地址) 一. 一般模式可用的按钮说明 1.1 ...

随机推荐

  1. 编程中遇到的Python错误和解决方法汇总整理

    这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下   开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...

  2. git clone 指定的单个目录或文件夹

    git clone 指定的单个目录或文件夹 针对自己的项目 方法一 基于sparse clone变通方法 创建一个空仓库 拉取远程仓库信息 开启 sparse clone 设置过滤 更新仓库 创建空仓 ...

  3. Python学习笔记之发展史、简介以及特点

    Python发展史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的. Python 本身也是由诸多其他语言发展而来的,这包括 ...

  4. oozie fork join结点

    oozie可以用fork和join节点进行多任务并行处理,同时fork和join也是同时出现,缺一不可. 语法: <workflow-app name="[WF-DEF-NAME]&q ...

  5. 行高 line-height

    一.行高的定义 line-height(行高):两行文字基线之间的距离 1.什么是基线? 2.为何是基线? 3.需要两行吗? 1.什么是基线? 我们上学的时候都用过,抄写英文字母的时候.其中有一条红线 ...

  6. Struts2 第六讲 -- Struts2的结果类型

    7.struts2的结果类型 l 每个 action 方法都将返回一个 String 类型的值, Struts 将根据这个值来决定响应什么结果. l 每个 Action 声明都必须包含有数量足够多的 ...

  7. spring入门(四) spring mvc返回json结果

    前提:已搭建好环境 1.建立Controller package com.ice.controller; import com.ice.model.Person; import org.springf ...

  8. 关于 NSData 的数据类型(2进制,16进制之间)及深入剖析(转)

    . NSData 与 NSString NSData-> NSString NSString *aString = [[NSString alloc initWithData:adataenco ...

  9. iOS10 开发权限适配设置 崩溃(上传打包后构建版本一直不显示)

    ios10 系统必须强制配置系统权限 如果不配置,调试的时候导致崩溃,还会引发包无效的问题,导致上传打包后构建版本一直不显示 解决方案1.在项目中找到info.plist文件,右键点击以 Source ...

  10. react.js中实现tab吸顶效果问题

    在react项目开发中有一个需求是,页面滚动到tab所在位置时,tab要固定在顶部. 实现的思路其实很简单,就是判断当滚动距离scrollTop大于tab距离页面顶部距离offsetTop时,将tab ...