一、Vim是什么

  Vim是一个高度可配置的文本编辑器,用于创建和更改任何类型的文本非常高效。与大多数UNIX系统和Apple OS X一起,它被包含为“vi”。Vim是稳定的,并且不断发展,变得更好。其特点是:持久的多级撤消树;广泛的插件系统;支持数百种编程语言和文件格式;强大的搜索和替换;与许多工具集成。     Vim是Vi IMproved,是编辑器Vi的一个加强版,一个极其强大并符合IT工程师(程序员、运维)习惯的编辑器。如果你是一名职业的SE,那么一定在寻找一款出色的能够自由定制、满足灵活编辑功能的编辑器。那么答案,就是vim或者Emacs。vim最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘的各种巧妙组合操作却能带来极为大幅的效率提升。     在Linux系统中,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文件是/usr/share/vim/vimrc。     那么vimRC中的RC是什么意思?   一般在运行某个软件、环境或工具之初,要初始执行的一些命令,称为Run Commands,即RC。根据Wikipedia.org的记载,RC缩写的用法源自MIT的相容分时操作系统(Compatible Time-Sharing System,CTSS)[参考1],有兴趣的话请自行了解。  

二、三种基本模式

基本上vi/vim可以分为三种状态,分别是普通模式、插入模式和命令模式,各模式的功能区分如下: 1、普通模式 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段。 2、插入模式 只有在插入下,才可以做文字输入、删除,按「ESC」键可回到普通模式。 可以按i、I、a、A、o、O、r、R即可。其中i和I表示插入(Insert),r和R表示替换(replace)。 3、命令模式 将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号等…… 可以按“:”、“/”、“?”。其中“:”表示输入vim命令,“/”表示后面输入要向下搜索的字符串,“?”表示后面输入要向上搜索字符串。   其实,可以把普通模式理解为常态,进入其它任何一种模式,需要某种特殊方式,而从其它特殊模式回到普通模式,就按「ESC」键即可。   Vim的三种基本模式如下图:

三、vim最常用的配置

为了使以下参数永久有效,那你可以把以下参数写进/etc/vimrc配置文件里,当然,有一些参数已经存在配置文件中了。  1、颜色设置

syntax on   开启代码高亮 syntax off   关闭代码高亮 syntax enable 开启代码高亮

2、搜索设置

set hlsearch   --开启搜索高亮 set nohlsearch  --关闭搜索高亮 set incsearch    --输入搜索字符串的同时进行搜索 set ignorecase  --搜索时忽略大小写

3、用户界面

set ruler       --开启光标位置提示 set number     --显示行号 set nonu      --不显示行号 set cmdheight=1  --命令部分高度为1

4、编辑辅助配置

set autoindent     --自动缩进 set noautoindent   --不自动缩进 set smartindent     --智能缩进 set autoread       --当文件在外部被改变时,vim自动更新载入 set showmatch      --显示匹配的括号

四、常用的状态切换按键

1、普通模式 → 插入模式

i   小写字母i,   在光标位置插入 a  小写字母a,  在光标的下一个位置插入 I   大写字母I,   在光标所在行的第一个非空格处插入 A  大写字母A, 在光标所在行的最后一个字符处插入 o  小写字母o,  在光标所在行的下一行处插入新行 O  大写字母O, 在光标所在行的上一行处插入新航 r   小写字母r,   替换光标所在处的字符一次 R  大写字母R, 持续替换光标所在处的字符,直到按下「ESC」键

2、普通模式 → 命令模式

:w   保存文件 :w!  强制保存文件(前提是用户有修改文件访问权限的权限) :q   退出缓冲区 :q!  强制退出缓冲区而不保存 :wq   保存文件并退出缓冲区 :wq!  强制保存文件并退出缓冲区(前提是用户有修改文件访问权限的权限) :w [filename]  另存为名为filename文件 :r [filename]   将另外一个文件读入到正在编辑的文件 :n1,n2 w [filename]  将n1行到n2行的数据另存为名为filename文件 :x      保存并退出 ZZ    保存并退出 ZQ   不保存退出

3、插入模式 → 视图模式 按下「ESC」键   4、命令模式 → 视图模式 按下「ESC」键  

五、常用的光标移动按键

1、光标字符操作

h  向左箭头键(←) 光标向左移动一个字符 l   向右箭头键(→) 光标向右移动一个字符 j   向下箭头键(↓) 光标向下移动一个字符 k  向上箭头键(↑) 光标向上移动一个字符 $  光标移动到行尾(End),注意要按「Shift」键 0  光标移动到行首(Home) ^  光标移动到行首第一个非空白字符(Home),注意要按「Shift」键

2、光标词操作

w   光标移动到后一词的词首 W  光标移动到后一词的词首且忽略标点符号 e   光标移动到后一词的词尾 E   光标移动到后一词的词尾且忽略标点符号 b   光标移动到前一词的词首 B   光标移动到前一词的词首且忽略标点符号

3、光标行操作

G     光标移动到文件的最后一行的第一个非空白字符 nG/ngg 光标移动到文件的第n行,相当于”:n” gg    光标移动到文件的第1行的第一个非空白字符

4、光标页操作

Ctrl + f   向下翻页(Pagedown) Ctrl + b  向上翻页(Pageup) Ctrl + d  向下翻半页 Ctrl + u  向上翻半页 「H」  光标移动到目前显示页的第一行 「M」  光标移动到目前显示页的中间行 「L」   光标移动到目前显示页的最后一行

5、光标自由操作

Ctrl + o  回到光标的上一位置

六、常用编辑操作按键

1、删除操作(delete)

dd   删除光标所在行 ndd    删除从光标所在行开始,向下的n行 d1G   删除从光标所在行开始,到第一行的所有行 dG   删除从光标所在行开始,到最后一行的所有行 d$    删除从光标所在位置,到行尾的所有字符 d0    删除从光标所在位置,到行首的所有字符 x    每按一次,删除光标所在位置的“后面”一个字符。 nx     删除光标所在位置的“后面”n个字符。 X      大写的X,每按一次,删除光标所在位置的“前面”一个字符。 nX    删除光标所在位置的“前面”n个字符。

2、复制操作(yank)

yy   复制光标所在行 nyy    复制从光标所在行开始,向下的n行 y1G   复制从光标所在行开始,到第一行的所有行 yG     复制从光标所在行开始,到最后一行的所有行 y$   复制从光标所在位置,到行尾的所有字符 y0   复制从光标所在位置,到行首的所有字符 J     将光标所在行与下一行合并成一行 yw     复制当前光标所在的字母到该单词的最后一个字母 yaw   复制当前光标所在的单词

3、粘贴操作(paste)

p  小写字母p,粘贴剪贴板中的数据,从光标所在行的下一行开始 P  大写字母P,粘贴剪贴板中的数据,从光标所在行的上一行开始~~

4、撤销与重做操作(undo)

u   撤销上一个操作

5、重复操作

.   重复上一操作

6、替换操作(replace)

r    替换光标所在处字符 R   进入替换模式,直至按ESC退出 cc     替换光标所在行 cw    替换光标所在的英文单词 ~    转换大小写 :n1,n2s/old/new/g  从n1到n2行将old替换成new,g表示全部替换 :1,$s/old/new/g   将整个文件的old替换成new :1,$s/old/new/gc    c表示确认    new (y/n/a/q/l/^E/^Y)? 表示如下:     y:    替换当前内容     n:   不替换     a:    替换所有     q:    退出     l:   替换当前内容,并退出     Ctrl + e:向后查找     Ctrl + y:向前查找

7、排版操作

:le    光标所在行左对齐 :ri     光标所在行右对齐 :ce   光标所在行居中

8、查看历史

:history  显示最近在vim里面输入的历史

七、常用的搜索快捷键

1、搜索字符串

/string    向下搜索字符串“string” ?string   向上搜索字符串“string”

2、重复上次搜索

n   根据上次搜索条件找到下一个匹配的字符串 N  根据上次搜索条件找到上一个匹配的字符串

八、常用多缓冲区操作按键

1、单一缓冲区打开多个文件

:files  显示目前打开了哪些文件 :n    切换到下一个缓冲区内容 :N   切换到上一个缓冲区内容 :2n    切换到下下个缓冲区内容 :bn    下一个缓冲区内容(buffer next) :bp    上一个缓冲区内容(buffer previous)

2、多个缓冲区打开多个文件

:sp [filename]  打开一个新的缓冲区,如果有filename则内容为该文件,否则为当前文件 Ctrl+w n  新建一个缓冲区 Ctrl+w q  退出光标所在的缓冲区 Ctrl+w j   光标移动到下一缓冲区 Ctrl+w k  光标移动到上一缓冲区 Ctrl+w l  光标移动到右一缓冲区 Ctrl+w h  光标移动到左一缓冲区 Ctrl+w v  左右切割窗口新建缓冲区 Ctrl+w s  上下切割窗口新建缓冲区 Ctrl+w o  使光标所在缓冲区最大化,其他缓冲区隐藏

九、关于加密

1、加密文本文件 当你用vim打开或新建一个文件时,如果加上-x参数,即:

# vim -x test.txt  --打开你要加密的文本文件 那么vim会提示你: Enter entryption key: 当你输入了密码后,vim会提示你重复输入以确认: Enter same key again: 当你在设置密码的时候,是以*来显示的,非明文。打开文件之后,:wq保存退出,密码才生效。   当下次有人(包括你自己)打开该文件的时候,vim就会提示: Enter encryption key: 这时你只要输入你之前所设置的密码就可以了。如果你输入的密码是错误的,vim并不会提示你密码错误,而是显示一堆无意义的垃圾代码。

2、解除加密与重设密码 打开你已经加密的文件,然后输入:

# vim test.txt   --打开加密文件之后,输入下面内容 :set key=

这样,你的密码就被设置为空了,今后进入就不再需要输入密码了。而如果你向重设密码的话,你可以输入:

:X

注意是个大写字母X。这时vim会提示你,只要反复输入两次新的密码就可以了:

Enter entryption key: ***** Enter sanme key again: *****

如果是清除密码,连续敲两次键盘就可以了   注意: 加密、解除密码、重设密码之后,一定要保存之后才能生效。 如果密码输入错误,vim不会拒绝访问者编辑文件。在这种显示乱码的情况下编辑文件并保存,整个文件就会变得混乱不堪,无法辨识。今后即使使用正确的密码打开文件,也看不到正确的文档了。   最后,附一张Vim使用总结图