vim编辑器

vim编辑器:

         文本:ASCII, Unicode(全球统一编码格式)

         文本编辑种类:

                 行编辑器: sed

                 全屏编辑器:nano,vi,vim

                         vi:Visual Interface

                         vim:Vi Improved

         其他编辑器:

                 gedit:一个简单的图形编辑器

                 gvim:一个Vim编辑器的图形版本

vim:模式化的编辑器

        三种主要模式:

                 命令模式:移动光标,剪切,粘贴文本

                 输入模式:修改文本

                 扩展命令模式:保存,退出等

        打开文件:

                 # vim  [OPTION]… FILE…

                 如果该文件存在,文件被打开并显示内容

                 如果该文件不存在,当编辑后第一次存盘时创建它

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

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

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

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

                 vim –d file1 file2…:比较多个文件

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

                 ex file 或 vim –e 直接进入ex模式(扩展模式)

        模式转换:

                 命令模式 –>  输入模式

                         i:insert,在光标所在处输入

                         I:在当前光标所在行的行首输入

                         a:append,在光标所在处后面输入

                         A:在当前光标所在行的行尾输入

                         o:在当前光标所在行的下方打开一个新的空白行

                         O:在当前光标所在行的上方打开一个新的空白行

                 输入模式 —->  命令模式

                         ESC

                 命令模式 —->  扩展模式

                          :

                 扩展模式 —->  命令模式

                          ESC(2次)

                 锁定和解锁文件:CTRL+s,Ctrl+q

        关闭文件:

                 ZZ:保存退出

                 ZQ:不保存退出

                 :q 退出

                 :q! 强制退出,丢弃做出的修改

                 :wq 保存退出

                : x 保存退出

        光标跳转:

                字符间跳转:

                         h: 左  l: 右  j: 下  k: 上

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

                单词间跳转:

                         w:下一个单词的词首

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

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

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

                当前页跳转:

                        H:页首 M:页中间行 L: 页底

                行首行尾跳转:

                         ^:跳转至行首的第一个非空白字符;

                         0:跳转至行首

                         $:跳转至行尾

                行间移动:

                         #G:跳转至由#指定行

                         G:最后一行

                         1G, gg:第一行

                句间移动:

                        ):下一句 ( :上一句

                段落间移动:

                        }: 下一段 { :上一段

         命令模式翻屏:

                 Ctrl+f:向文件尾部翻一屏

                 Ctrl+b:向文件首部翻一屏

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

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

        vim的编辑命令:

                 字符编辑:

                         x:删除光标处的字符;

                         #x:删除光标处起始的#个字符

                         xp:交换光标所在处的字符及其后面字符的位置

                         ~:转换大小写

                 替换命令(r, replace)

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

                         R:切换成REPLACE,可以替代当前光标后面的n(n取决与你输入的字符)个字符

                 删除命令:

                         d:删除命令,可结合光标跳转字符,实现范围删除;

                         d$:删除光标处到行尾

                         d^:删除光标前一个字符到非空行首

                         d0:删除光标前一个字符到行首

                         dw:删除当前光标至单词词尾

                         de:删除当前光标至单词词尾

                         db:删除当前光标至单词词首

                                 #COMMAND:删除多个行或单词

                         dd:  删除光标所在的行

                                 #dd :删除#行

                         D:从当前光标位置一直删除到行尾,等同于d$

                 复制命令(y, yank):

                         y:复制,行为相似于d命令

                         y$:复制光标处到行尾

                         y^:复制光标前一个字符到非空行首

                         y0:复制光标前一个字符到行首

                         yw:复制当前光标位置至单词词尾

                         ye:复制当前光标位置至单词词尾

                         yb:复制当前光标位置至单词词首

                                  #COMMAND:复制多个行,单词

                        yy:复制行

                                  #yy:复制#行

                         Y:复制整行,等同于yy

                 粘贴命令(p, paste): :

                         p :缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

                         P :缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

                 改变命令(c, change)

                         c:修改后切换成插入模式:命令模式 –>  输入模式

                         用法同d命令,不过删除数据后进入了输入模式

                         c$:删除光标处到行尾,并进入输入模式

                         c^:删除光标前一个字符到非空行首,并进入输入模式

                         c0:删除光标前一个字符到行首,并进入输入模式

                         cw:删除当前光标至单词词尾,并进入输入模式

                         ce:删除当前光标至单词词尾,并进入输入模式

                         cb:删除当前光标至单词词首,并进入输入模式

                                  #COMMAND

                        cc:删除当前行并输入新内容

                                  #cc:

                         C:删除当前光标到行尾,并切换成插入模式

                 使用小技巧

                         100iwang [ESC]

                                  粘贴“wang ”100次 次

                         <start position><command><end position>

                                 Command:

                                          y复制、d删除、gU变大写、gu变小写

                                 例如0gU$命令意味着:(把当前行全变成大写)

                                         0:先到行头

                                         gU:变大写

                                         $:拷贝到本行最后一个字符

        其他编辑操作:

                 可视化模式

                        v面向字符,按字符选定

                         V面向行,按行选定

                        ctrl-v  面向块

                                  结合编辑命令使用:d,c,y,p

                撤销(undo)操作:

                         u:撤销最近的更改

                        #u:撤销之前多次更改

                        U撤消光标落在这行后所有此行的更改

                撤销此前的撤销:

                        Ctrl + r 重做最后的“撤消”更改

                重复执行前一个编辑操作:

                         . 重复前一个操作

                         n. 重复前一个操作n次

        vim的寄存器:

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

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

                         如:3"ayy  表示复制3行到a寄存器中

                         "tp 表示将t寄存器内容粘贴

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

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

        编辑二进制文件:

                 以二进制方式打开文件

                         vim –b binaryfile

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

                         :%!xxd

                 编辑二进制文件

                 扩展命令模式下,利用xxd命令转换回二进制

                         :%!xxd –r

                 保存退出

        扩展模式

                 按“: ”进入Ex 模式

                         创建一个命令提示符:, 处于底部的屏幕左侧

                 命令:

                         ;w 写(存)磁盘文件

                         :wq 写入并退出

                         :x 写入并退出

                         :q 退出

                         :q!不存盘退出,所有更改都将丢失

                         :r /path/from/file 读文件内容到当前文件中

                         :w /path/to/file 将当前文件内容写入另一个文件

                         :!command 不退出文件的情况下,执行命令,查看结果

                         :r!command 读取command命令的输出插入到当前位置的下一行(新建的空行)

                                 比如用户加密的密码;r!getent shadow gao | cut -d: -f1

                 内嵌命令接口:

                         地址定界

                                 :start_pos,end_pos

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

                                 #,#:从第一个#行起始,到第二个#行结尾

                                 #,+#:从左侧#行起始,到左侧#向后偏移第二个#的行(#+#行)结束

                                          2,+3:表示2到5行

                                 .:当前行

                                 $:最后一行

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

                                 %:全文,相当于1,$

                                 /pat1/,/pat2/

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

                                         #,/pat/:从#行开始,一直到第一次被pat匹配到的行结束

                                         /pat/,$:从第一次被pat1模式匹配到的行开始,一直到$行结束

                                 使用方式:地址定界后跟一个编辑命令

                                         d:删除被地址定界的行

                                         y:复制被地址定界的行

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

                                         r /path/from/file:在地址定界的末行下一行插入指定文件中的所有内容

                        查找

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

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

                                         n:与命令查找方向相同

                                         N:与命令查找方向相反

                        查找并替换(类似sed命令中的s选项)

                                 s:末行模式的命令,在扩展模式下完成查找替换操作

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

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

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

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

                                         修饰符:

                                                 i:忽略大小写

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

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

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

                                                  s@@@,s###

        vim的多文件功能:

                 多文件:

                         vim FILE1 FILE2 FILE3 …

                         文件间切换:

                                 :next  下一个

                                 :prev  前一个

                                 :first  第一个

                                 :last  最后一个

                         文件间退出:

                                 :wall  保存所有

                                 :qall  退出所有

                 多窗口:

                         vim -o|-O FILE1 FILE2 …

                                 -o:水平分割,上下分屏

                                 -O:垂直分割,左右分屏

                         在窗口间切换: Ctrl+w, Arrow(键盘上的上下左右键)

                         单个文件也可以分割成多个窗口(常用在前后文对比):

                                 Ctrl+w,s: split,水平分割,上下分屏

                                 Ctrl+w,v: vertical,垂直分割,左右分屏

                                退出

                                 ctrl+w,q:取消当前光标所在窗口

                                 ctrl+w,o:取消全部窗口,保留当前光标所在窗口

                                 :wqall 退出

        定制vim 的工作特性:

                 配置文件:永久有效

                 全局:/etc/vimrc

                 个人:~/.vimrc

                 在扩展模式下配置的工作特性:当前vim 进程有效

                 (1)  行号

                         显示:set number,简写为set nu

                         取消显示:set nonumber,简写为set nonu

                 (2)  括号成对匹配(vim中默认是开启的,无法关闭)

                         匹配:set showmatch,简写为set sm

                         取消:set nosm

                 (3)  自动缩进

                         启用:set ai

                         禁用:set noai

                 (4)  高亮搜索

                         启用:set hlsearch

                         禁用:set nohlsearch

                 (5)  语法高亮

                         启用:syntax on

                         禁用:syntax off

                 (6)  忽略字符的大小写

                         启用:set ic

                         不忽略:set noic

                 (7)  文件格式

                         启用:set=fileformat=unix

                         不忽略:set=fileformat=dos

                 (8)  设置文本宽度

                         :set textwidth=65 (vim only) :距离左边65个字符换行

                         :set wrapmargin=15 :距离右边15个字符换行,等价与上面的命令

        获取帮助:

                 :help option-list

                 :set all                

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/32070