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

(0)
上一篇 2016-08-10 10:15
下一篇 2016-08-10 10:22

相关推荐

  • man帮助

                                        正确使用 man帮助      在生产过程中,我们会遇到不同的技术故…

    2017-05-30
  • 服务器故障的解决方法以及基本脚本的编写

    1,当开机时一直重新启动怎么办? 在开机时就如字符界面后按下a键然后进入单用户模式,通过设置 [root@CentOS6 boot]# vim /etc/inittab 这个文件,将里面的开机启动项改为多用户模式就可。 # id:3:initdefault: “/etc/inittab” 26L, 884C 讲id这项设置完成后重新启动就好。 2,忘记roo…

    Linux干货 2017-05-15
  • mysql慢查询日志进行按库切割重写文件然后分析

    需求: 把每天的慢查询日志进行按库切割 对每个库的慢查询日志进行分析 思路: 工具/功能 一般统计信息 高级统计信息 脚本 优势 mysqldumpslow 支持 不支持 perl mysql官方自带 mysqlsla 支持 支持 perl 功能强大,数据报表齐全,定制化能力强. mysql-explain-slow-log 支持 不支持 perl 无 my…

    Linux干货 2015-04-03
  • 文本处理、正则表达式、cut、grep、egrep、fgrep

    文本处理、正则表达式、cut、grep、egrep、fgrep Linux中文本处理工具最常用的就是文本处理三剑客grep、sed、awk再配合正则表达式,可以实现足够多的文本处理功能。工具的强大之处是因为使用它的人,如何才能发挥文本处理工具的作用呢?答案就是正则表达式,其实正则表达式,只是一种思想,一种表示方法,只要我们使用的工具支持表示这种思想那么这个工…

    Linux干货 2016-08-07
  • 硬链接与软链接的区别

    硬链接(Hard Link):   硬连接指通过索引节点来进行链接(即一个指针指向文件索引节点)。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种链接就是硬链接。硬链接的作用是允许一个文件拥有多个有效路径…

    Linux干货 2016-10-20