vim编辑器常用技巧
(一).写作缘由: 在使用linux的过程中,无论是运维管理还是普通用户都难免对操作文件,拥有一款得心应手的编辑器是必不可少的。可以说绝大部分使用者都是使用的vi/vim编辑器,不仅仅是因为它是linux系统默认安装了的软件,还因为它体积很小,功能强大。 vim(VI iMproved)编辑器可以说是vi(visual interface)的扩展版,vim支持语法高亮等特性,以及各种高效率的操作。使得编辑文件的效率得到提高,当然这需要使用者对其相对较熟悉。 (二).vim的常见模式: (1).vim的模式非常多,这里只介绍一部分模式,包括编辑模式,插入模式,末行模式,本文也包含替换模式和可视化模式的内容。 a.编辑模式:就是使用vim打开文件或者直接输入vim之后的模式,左下角没什么特殊的提示,如下两图: b.插入模式:一般按i,a,s,o或其大写等能进入插入模式,在这个模式下输入的内容会写到文件。如下图,在左下角会提示编辑器此时正处于该状态: c.末行模式:此模式是在编辑模式下输入':'后进入的模式,该模式下的功能很多包括执行一些其他shell命令等,如下图所示: d.替换模式:该模式是在编辑模式下按R键进入,在该模式下对文本的操作是替换操作,和覆盖差不多,如下图: e.可视化模式:这种模式和windows里面的多选差不多,在编辑模式下按v或者V键能进入该模式,可以对选中的内容进行操作,如下图: (2).这些模式之间是可以相互转换的,下图描述了上面几种模式的相互转换: (三).vim的常用技巧: (1).打开文件: vim filename: 打开名为filename的文件,光标处于文件的开始位置。 vim +n filename:打开文件后,直接让光标处于第n行的行首。 vim + filename: 打开文件后直接处于最后一行行首(注意加号两边是空格)。 vim /pattern filename: 打开文件后使光标定位到第一次被pattern匹配到的模式位置(pattern是匹配模式,之后要确定一下,如下图:) (2).关闭文件:一般在末行模式或者编辑模式下关闭文件 末行模式下: q:退出(不会保存内容,若此时编辑了内容,是不能退的,会让你确认是否保存) wq: 保存并退出 q!: 不保存并退出 w:保存 w!: 强制保存(需要特定权限) x:与wq一样 编辑模式下: zz:保存退出 (3).编辑器的一些常见设置:可以更改/etc/vimrc文件或者~/.vimrc,在末行模式下添加如下内容,也可以在末行模式下执行如下内容: :set nu 让编辑器行号(nu为number) :syntax on开启语法高亮 :set ts=4设置tab长度为4 :set autoindent 设置自动对齐 :set cindent C语言编码时,内嵌代码自动缩进 这个设置完全可以按自己的喜好设置,网上很多,这里就不一一例举了。 (4).光标移动: a.逐个字符移动 h: 左移光标 l: 上移光标 j: 下移光标 k: 右移光标 数字n与以上几个键组合: 可一次移动n个字符(例如3j: 光标从当前位置开始下移三个位置)
b.逐个单词移动 w: 移到下个单词词首 e: 移到当前或下一个单词的词尾 b: 跳到当前或上一个单词的词首 数字键n与上面的键组合: 可一次移动n个单词位置(例如5w: 向后移动五个单词的位置,且到单词首字母位置) (5).行内跳转: 0: 跳到行首(绝对行首) ^: 跳到行首(相对行首) $: 跳到行尾 (6).行间跳转: G: 跳到最后行 gg: 跳到第一行 n + G: 跳转到第n行
在末行模式下跳转只需输入行号即可跳转,如下图: (7).翻屏操作: Ctrl + f: 向下翻一屏 Ctrl + b: 向上翻一屏 Ctrl + d: 向下翻半屏 Ctrl + u: 向上翻半屏 (8).删除单个字符: x: 删除光标所在处的单个字符 nx: 删除光标所在处及向后的共n个字符 (9).删除命令d: a.编辑模式下,与跳转命令组合使用可以删除多少内容: dw: 删除一个单词 dd: 删除当前光标所在行 ndd: 删除包括当前光标所在行内的n行
b.末行模式下 m,nd:删除m到n行 .,+5d:删除当前行到当前行之后的5行(共5行)
c.说明:删除的内容并没有被立即清空,而是在内存中,最后一次删除的内容可用于粘贴 (10).粘贴命令: p: 如果删除或复制为整行内容,则粘贴到光标所在行的下方,如果复制或者删除的内容不是整行,则粘贴到光标所在字符的后面 P: 如果删除或复制为整行内容,则粘贴到光标所在行的上方,则粘贴到光标所在字符的前面 (11).复制命令y: 用法与d命令一样,将d换成y即可,也可在变模式和末行模式下进行,使用方法完全一样。 (12).修改命令c: 先删除内容,再转换为插入模式。 (13).替换命令r: 按了r之后,输入要替换成的字符 也可与n组合,达到同时替换多个字符(一般不会那么干,很少有意义) R:直接进入替换模式,输入的内容将覆盖原有的内容 (14).撤销编辑: u: 撤销前一次编辑操做 nu:撤销前n次操作(一般只保留50次修改操作)
撤销刚刚撤销的操作:Ctrl + r (15).重复前一次编辑操作 .: 按'.'即可重复上一次操作,例如:dd会后,再按'.',则会继续执行dd命令 (16).可视化模式(如下图): v: 按字符选取 V: 按矩形选取 (17).查找替换: /pattern:从文件首向尾部查找 ?pattern:从当前光标位置向文件首部查找 n:跳到下一个匹配到的对象 N:跳到上一个匹配到的对象 (18).查找并替换(在末行模式下): m,ns/pattern/string/g(全局替换)i(忽略大小写) 在第m行到n行搜索partern(可以正则),替换成string,即使一行有多个全部替换,忽略大小写 例如: s/pattern/string/: 替换当前行匹配到的pattern的第一个对象为string s/pattern/string/g: 替换当前行匹配到的pattern的所有对象为string
.,$s/pattern/string/g:替换从当前行到最后一行匹配到的pattern的所有对象为string 1,$s/pattern/string/g:替换文本中所有的匹配到的pattern为string
%s/pattern/string/: 替换每一行匹配到的pattern的第一个对象为string %s/pattern/string/g: 替换每一行匹配到的pattern的所有对象为string 说明: '/'与'@'效果在这里是一样的。 (四).如有不足之处,还请斧正: 这里只是写了vim的一少部分常用的功能,若你所找的答案不在其中,还请使用man帮助或者其他相关资料进行查阅。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |