VIM(VI)编辑器使用整理

VI: Visual Interface,文本编辑器

文本: ASCII, Unicode

vi是一个功能强大的全屏幕文本编辑工具,一直以来都作为类UNIX操作系统的默认文本编辑器,vim(ViImproved)是vi编辑器的增强版本。在vi的基础上扩展了很多实用的功能,但是习惯上也将vim称作vi。


文本编辑种类

行编辑器: sed

全屏编辑器:nano, vi

其他编辑器

gedit 一个简单的图形编辑器

gvim  一个vim编辑器的图形版本

vi相关工具

vipw

vipr

一、vim编辑器的工作模式

1、模式介绍

命令模式(Command Mode):启动vi编辑器后默认进入命令模式。该模式中主要完成如光标移动、字符串查找、以及删除、复制、粘贴文件内容等相关操作。

插入模式(Insert Mode):该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改或者添加新的内容。处于输入模式时,vi编辑器的最后一行会出现“——INSERT——“的状态提示信息。

末行模式(Last Line Mode):该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现冒号”:“提示符。

2、模式切换

命令模式         →     a、i、o    、A、I、O       →     插入模式

插入模式         →     Esc   →     命令模式

命令模式         →     :  →     末行模式

末行模式         →     Esc   →     命令模式  按两次Esc可快速返回到命令模式

二、vim打开保存文件

1、打开单个文件

vim [选项] 文件名

直接使用vim会打开一个有提示信息的空文档,保存退出时需要在末行模式下使用w选项先保存,再退出文件。

使用vim可以使用如下选项打开文件:

+# : 打开文件后,直接让光标处于第#行的行首

+/PATTERN :打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

vim + file :直接打开file,光标在最后一行

vim –b file :二进制方式打开文件

vim –d file1 file2… :比较多个文件,多窗口打开

vim -m file :只读方式打开文件

单文件窗口分割:

Ctrl+w,s: split, 水平分割

Ctrl+w,v: vertical, 垂直分割

ctrl+w,q:取消相邻窗口

ctrl+w,o:取消全部窗口

: wqall 退出

2、打开多个文件

vim 选项file1  file2 ... 用vim同时打开多个文件

-o:横向打开多个文件

-O:纵向打开多个文件

ctrl+w+方向箭头  多个文件之间切换

:next 下一个

:prev 前一个

:first 第一个

:last 最后一个

:wall 保存所有

:qall 退出所有

:wqall

3、编辑二进制文件

以二进制方式打开文件

vim –b binaryfile

扩展命令模式下,利用xxd命令转换为可读的十六进制

:%!xxd

:%!xxd –r        转换回二进制

编辑二进制文件

~]# xxd /tmp/profile

4、保存文件

当编辑一个文件时,如果该文件存在,文件被打开并显示文件内容;如果该文件不存在,当编辑后第一次存盘时创建它。

退出编辑器。需要退出vi编辑器时,可以执行“:q”命令。若文件内容已经修改保存,仅使用“:q”命令将无法成功退出,这时需要使用“:q!”命令强行退出(不保存即退出)。

末行模式:(输入”:”进入末行模式)

:w   保存文件,当文件已经存在时,使用此命令

:w new_filename  将文件另存为

:!    强行操作

:w!   强行保存文件

:q    退出

:q!    强行退出

:wq 或 :x   保存退出

:x!

命令行模式:(Esc)

ZZ   保存退出

ZQ:不保存退出

三、命令模式中的操作命令

1、输入模式切换

在命令模式中,使用a、i、o等按键可以快速切换至输入模式,同时确定插入点的方式和位置,以便录入文件内容。需要返回命令模式时,按Esc键即可。

常见的几个模式切换键及其作用如下:

a:append,在当前光标位置之后插入文内容

A:在光标所在行的末尾(行尾)插入内容

i: insert,在当前光标位置之前插入内容

I:  在光标所在行的开头(行首)插入内容

o:在光标所在行的后面插入一个新行(小写字母o)

O:在光标所在行的前面插入一个新行(大写字母O)

2.、移动光标

字符间跳转

直接使用键盘的四个方向键完成相应的光标移动。

h: 将光标向左移动一格

l: 将光标向右移动一格

j: 将光标向下移动一格

k: 将光标向上移动一格

#COMMAND:跳转由#指定的个数的字符

单词间跳转

w:下一个单词的词首

e:当前或下一单词的词尾

b:当前或前一个单词的词首

#COMMAND:由#指定一次跳转的单词数

Ctrl+COMMAND:以连续字符算一个单词

当前页跳转

H:将光标移动到该屏幕的页首

M:将光标移动到该屏幕的中间行首

L: 将光标移动到该屏幕的最后一行行首

行首行尾跳转

^: 跳转至行首的第一个非空白字符(相对行首)

0或 home键: 数字0,将光标移动到该行的行首(绝对行首)

$ 或 end键: 将光标移动到该行的行末(绝对行尾)

其中home和end键同样适用于vi的输入模式

行间移动

#G:#为数值,跳转至由#指定行的行首

G:将光标移动到文章的最后一行

1G 或 gg: 将光标移动到文章的第一行

Enter:移至下行行首

句间移动,以“.”为分隔符

):下一句

(:上一句

段落间移动

}:下一段

{:上一段

翻页操作

Ctrl+F 或 page down: 向文件尾部翻一屏

Ctrl+B 或 page up: 向文件首部翻一屏

Ctrl+D: 向文件尾部翻半屏

Ctrl+U:向文件首部翻半屏

其中PageDown和PageUp键同样适用于vi的输入模式

删除操作

x 或 del键:删除光标处的单个字符

#x: #为数值,删除光标处后面的#个字符(包含光标处字符)

X: 删除当前光标前的单个字符

dd:删除当前光标所在行

#dd:#为数值,删除从光标处开始后面#行内容

d^:删除当前光标之前到行首的所有字符

d$:删除当前光标处到行尾的所有字符

dCOMMAND:命令可为h,l,j,k,分别表示删除光标前后单个字符、上下一行内容

d后面结合方向键可以删除当前光标处前一字符、后一字符、上两行、下两行

d0:删除到行首

dw:删除整个单词,如光标不在词首,则删除从当前到词尾

de:光标后面的单词,如光标不在词首,则删除从当前到词尾

db:删除光标前面的单词,如光标不在词尾,则删除从当前到词首

D:从当前光标位置一直删除到行尾

2d6  从第二行开始删除,一共删除6行

替换命令(r, replace)

r: 替换光标所在处的单个字符

R:切换成REPLACE模式,连续替换后面字符,按Esc结束

xp: 交换光标所在处的字符及其后面字符的位置(x删除,p粘贴)

~:转换大小写

gU 变大写

gu 变小写

复制、剪切、粘贴

Y:  复制光标所在行整行内容

yy:复制光标所在行整行的内容

#yy:复制从光标处开始的#行内容

#yw  例如:2yw就是复制两个单词

y$  复制光标所在处到行尾的内容

y0  复制光标前一个字符到行首的内容(绝对,包括制表符)

y^  复制光标前一个字符到行首的内容(相对)

ye  从当前位置拷贝到本单词的最后一个字符

yw  复制当前光标所在位置到单词尾字符的内容,相当于复制一个单词

100ic [ESC]  在当前位置向后粘贴“ c” 100次

p:粘贴到光标位置处之后

P:粘贴到光标位置处之前

:3,5y复制第三行到第五行内容

撤销操作

u: 用于取消最近一次的操作,多次重复按u键恢复已进行的多步操作

#u:撤销之前多次更改

U:取消对当前行所做的所有编辑

Ctrl+R可以恢复对使用u命令的操作

. 重复前一个操作

n. 重复前一个操作n次

其他命令

CTRL+s,锁定

Ctrl+q,解锁

四、命末行模式中的操作命令

:r filename  读文件内容到当前文件中(当前行的下面)

:r!command   将执行命令的结果写入到文件中

:!command    不退出vim执行命令

:set nu       number,显示行号

:set nonu     nonumber,取消显示行号

:set autoindent          缩进每一行,使之与前一行相同。常用于程序的编写。

:set noautoindent      取消缩进

:set number           在编辑文件时显示行号

:set nonumber   取消行号显示

:set ruler           在屏幕底部显示光标所在的行、列位置

:set noruler            不显示光标所在的行、列位置

:n1,n2 co n3        将从n1开始到n2为止的所有内容复制到n3后面

:n1,n2 m n3         将从n1开始到n2为止的所有内容移动到n3后面

:n1,n2 d          删除从n1开始到n2为止的所有内容

:n                 直接输入要移动到的行号即可实现跳行

:/str/                 从当前光标开始往后移动到有 str 的地方

:?str?               从当前光标开始往前移动到有 str 的地方

:setsm        showmatch,成对匹配

:setnosm       取消成对匹配

:setai          启用自动缩进

:setnoai        禁用自动缩进

:set hlsearch    启用高亮搜索

:set nohlsearch  取消高亮搜索

:syntax on       启用语法高亮

:syntax off      禁用语法高亮

:set ic          启用忽略字符的大小写

:set noic        不忽略字符的大小写

五、可视化模式

允许选择的文本块

v 面向字符

V 面向行

ctrl-v 面向块

可视化键可用于与移动键结合使用:

w, ) , },箭头等

突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等

六、扩展模式:地址定界

地址定界

:start_pos,end_pos

#: 具体第#行,例如2表示第2行;

#,#: 从左侧#表示行起始,到右侧#表示行结尾

#,+#: 从左侧#表示的行起始,加上右侧#表示的行数

: 2,+3 表示2到5行

.: 当前行

$: 最后一行

.,$-1 当前行到倒数第二行

%:全文, 相当于1,$

/pat1/,/pat2/

从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束

#,/pat/

/pat/,$

使用方式:后跟一个编辑命令

d y

w file: 将范围内的行另存至指定文件中

r file:在指定位置插入指定文件中的所有内容

七、搜索查找替换

查找

/PATTERN:从当前光标所在处向文件尾部查找

?PATTERN:从当前光标所在处向文件首部查找

n:与命令同方向,查找下一个

N:与命令反方向,查找下一个

s: 在扩展模式下完成查找替换操作

格式: s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用\1,\2, ...

等后向引用符号;还可以使用“ &”引用前面查找时查找到的整个内容

修饰符:

i: 忽略大小写

g: 全局替换;默认情况下,每一行只替换第一次出现

gc:全局替换,每次替换前询问

查找替换中的分隔符/可替换为其它字符,例如

[email protected]/[email protected]/[email protected]

s#/boot#/#i

示例:

:s/old/new     用new替换行中首次出现的old

: s/old/new/g   用new替换行中所有出现的old

:3,9 s/old/new/g用new替换从第3行到第9行中出现的old

:% s/old/new/g  用new替换整篇中出现的old

:s/old/new/gc  替换关键词之前替换

八、vim的寄存器

有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。

用a, b,…,z表示,用“寄存器表示,放在数字和命令之间

如: 3"tyy 表示复制3行到t寄存器中;"tp 表示将t寄存器内容粘贴

未指定,将使用无命名寄存器

有10个数字寄存器,用0, 1, …, 9表示, 0存放最近复制内容, 1存放最近删除内容。当新的文本变更和删除时, 1转存到2, 2转存到3,以此类推。数字寄存器不能在不同会话间共享。

九、定制vim的工作特性

当使用vim打开文件时可以输入set COMMAND设置vim的工作特性,这些都是临时生效的,关闭文件后设置的特性都失效了,要想永久生效可以把命令写入到文件中。

配置文件:永久有效

全局: /etc/vimrc

个人: ~/.vimrc     同时存在,个人配置生效

十、了解更多

vi/vim内置帮助

:help set

:help

:help topic

~]$vimtutor

时间: 08-09

VIM(VI)编辑器使用整理的相关文章

[Linux学习笔记] Linux文本编辑器Vim/Vi

文本编辑器Vim: Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器. 它的作用是建立.编辑.显示文本文件. Vim/Vi没有菜单,只有命令. 插入命令 命令 作用 a 在光标后附加文本 A 在本行行末附加文本 i 在光标前插入文本 I 在本行开始插入文本 o 在光标下插入新行 O 在光标上插入新行 定位命令 命令 作用 h 方向左键. 左移一个字符 j 方向下键. 下移一行 k 方向上键. 上移一行 l 方向右键. 右移一个字符 $ 移至行尾 0 移至行

文本编辑器VIM/VI

vim/vi  功能强大全屏文本编辑器.主要是建立,编辑,显示文本. www.vim.org  构建shell脚本 :set number 使文件出现行号 a 光标后附件文件     i在光标前插入文本       o回到光标下插入新行 A在本行末附件文件   I在本行开始插入文本    O在光标上插入新行 命令模式: h←   j↓   k↑    i→    $行尾   0移至行首   H屏上方   M屏中方   L屏下端 定位 :set  number 设置行号 :set nonumber

Linux学习笔记之VI(VIM)编辑器

百度关于vi的资料 http://baike.baidu.com/view/908054.htm 关于vi 和vim的介绍可以在上面的网址看到. 1   进入和退出vi 进入:在终端命令行输入 vi 文件名   就会进入vi,并且建立了一个空的名字为刚才输入的文件,假如进入vi的时候不加文件名,那么进入vi后系统会自动建立一个空文件,你可以在命令模式下给这个文件改名. 退出:按ESC切换到命令模式下,输入 :q   这是没有保存就退出,一般系统会提示你要不要保存 :q!  强制退出,不保存 :w

linux vim,vi编辑器的基础

在之前我也不知道为什么要学vim和vi编辑器,只是听过别人说这个对与linux很重要. 先说一下为什么要学习这个编辑器,个人的看书理解. 系统管理员的重要工作就是参与与设置某些重要软件的配置文件,因此要至少学会一种以上的命令行界面的文本编辑器.在所有的linux distributions上头都会有的一套文本编辑器就是vi,而且很多软件默认也是使用vi作为它们编辑的界面.vim就是高级版的vi,vi是老式的文字处理器,vim不但可以用不同的颜色显示文字的内容,还能够进行诸如shell脚本,c等程

(四)文本编辑器Vim/Vi

Vi和Vim都是文本编辑器,不同的是Vim是Vi的升级版本,它不仅兼容Vi的所有指令,而且还有一些新的特性在里面. Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件. Vim/Vi没有菜单,只有命令 Vim/Vi的三种工作模式: 一.常用命令 1.插入命令 插入命令 命令 作用 a(append) 在光标后附加文本 A 在本行行末附加文本 i(insert) 在光标前插入文本 I 在本行开始插入文本 o 在光标下插入新行

vi 编辑器,gcc 编译器的使用

vi编辑器是我们在linux下经常使用的文本编辑器,这个东西也是专门为程序员准备的,基本上每个Unix和Linux系统都为我们提供了这个软件,我们可以使用vi来编写我们的代码.在vi编辑器下所有操作都必须通过键盘和特定的快捷键组合来完成,刚开始学习的新手会感觉不太容易,但是这个东西很重要,我们先来学习如何使用它,掌握了这个东西去面试的时候也算是一门技能.而vim是vi的增强版,新增加了很多功能. 在shell下输入命令vi 文件名,例如:vi first.c,就开始编辑first.c文件了.vi

Vim/Vi 使用总结

Vim/Vi简介 1.Vim/Vi 是一个文本编辑器,多适用在Linux/UNIX系统; 早期是Vi,现在增强版是Vim,但使用的还是Vi的操作. 2.Vim/Vi 没有菜单,只有命令. 3.作用:建立.编辑.显示文本文件. 常用操作 1.Vi有三种工作模式:命令模式.插入模式.编辑模式. Insert     Edit    2.格式:vi + 文件名 说明:如果是已存在此文件,表示打开:如果不存在此文件,表示新建. 3.三种模式的相互切换 3.1        默认进入"命令模式"

ubuntu下解决vi编辑器在输入模式下只能用字母键的问题

接触vi编辑器,刚用起来真的不习惯,想着慢点适应,但发现最让我受不了的就是在输入模式下竟然智能用a-z这几个键,常用的其他编辑健backspace和四个方向键都用不了.最初以为这就是常说的难用,但最后发现是自己见识太短啊.下面就给出解决办法: 在终端下执行sudo apt-get remove vim-common,再执行sudo apt-get install vim.做完上面的事后就可以正常的使用其他键了,,方便了很多.

拜师鸟哥之linux学习体会(9)——vim程序编辑器

1.    在linux下也是可以编程的哦,采用的是vim程序编辑器,如果你学会使用vim并能看懂一个vim程序,那就很了不得了.在介绍vim之前,我们先学习下他的前身vi.vi具有三种模式:一般模式.编辑模式和指令列命令模式.三者之间是这样转换的: 2.    一般打开一个vim程序就进入一般模式,之后输入o,O,a,A,i,I,r,R中的任何一个就进入编辑模式,之后左下方会出现INSERT或REPLACE.若要回到一般模式,就必须按下Esc来退出编辑模式.在一般模式下,输入:/?中的任意一个