如何优雅的删除代码-VIM

删代码一时爽,一直删一直爽。

删除应该是编码过程中非常高频率的操作了,不用vim的时候,一般就是选中删除或者跳到目标位置一直按Backspace或者Delete。而在vim中,你可以有上百中删除的姿势,比如下面这些操作。

我这里列出来的都是我日常中用的比较多的操作,且很多命令之间都是可以互相替换和组合的,比如i/a,d/s等等,这也是vim的灵活之处,大家具体场景可以活学活用。

一个字符

  • x

剪贴当前光表处的字符, 默认剪贴到vim的"("表示vim的默认寄存器,输入:reg 即查看“”对应的内容)寄存器

  • s

删除当前光标所在的字符,并进入插入模式

  • vd

选中当前字符,并删除;

  1. v:进入Visual模式,默认选中当前光标处字符;
  2. d:删除当前选中的内容
  • vc

选中当前字符,并更改(更改的意思就是删除并进入插入模式)

  1. v:进入Visual模式,默认选中当前光标处字符;
  2. c:删除当前选中字符,并进入插入模式

一部分

  • dw

删除从光标从到当前所在单词的词尾。

  • diw/daw

删除光标所在处的单词,i/a的区别在于i不会删除匹配符号(比如词尾的空格),a则反之

  • D/d$/

删除从光标到行尾的所有内容

  • d0/d^

删除从光标到行首的所有内容

  • dt{目标}

删除从光标到行内目标的位置。t可以理解为 到为什么位置/直到 的意思(until)

  • df{目标}

删除光标到f搜寻的目标位置(行内向后)

  • dF{目标}

删除光标到F搜寻的目标位置(行内向前)

以上d/D可以使用c/C进行替换,区别就是c会进行插入模式,d不会。

整行

  • dd

删除 当前行

  • S

删除当前行并进入Insert模式

  • Vd

进入Visual模式并选中当前行,然后删除选中内容

  • {行首}D

跳到行首,然后从光标所在处删到行尾

这里的行首操作可以有很多选择:

  1. ^ 跳到当前行第一个非空(非空格等非打印字符)字符
  2. 0 跳到当前行的第一个字符
  3. _ 效果和^相同
  • {行首}C

跳到行首,删除到行尾并进入插入模式。

  • di{匹配符号}

比如代码:obj.equal((a + b) + "this is a string");

光标在第一个字符a的时候,输入di(或者di),就会删除括号内容内的a + b
光标在停留在字符串内的字符t的时候,输入di“,就会删除整个字符串内的字符,留下一个空字符串。输入di(或者di)就会删除整个equal方法括号内的所有内容,留下一个空括号。

i可以理解为一种对称匹配,和下面a不同地方在于i不包含目标匹配符号,a则会包含目标匹配符号。

  • da{匹配符号}

参考上面的i的操作,i/a的不同之处在于i不好喊匹配符号,a则会包含匹配符号一起操作。

  • {数字}dd

从当前行开始,向下删除数字个行

  • :from,to d

从from行删除到to行,from和to可以替换为数字。

全部

  • :%d
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 光标移动 h 光标左移,同 <Left> 键j ...
    guanguans阅读 5,859评论 0 16
  • #########################################################...
    路峰阅读 4,756评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,944评论 0 5
  • 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可...
    三十儿阅读 3,093评论 0 1
  • 持续分享652天,2019年4月29日,张红。 今天受邀参加学校读书分享活动,现在正在候场中,挺期待,也挺开心。 ...
    啊呦a7_94阅读 1,007评论 0 0