美文网首页
vim 增删改查

vim 增删改查

作者: 愿时光温柔待她 | 来源:发表于2018-11-04 21:14 被阅读0次

    文本操作无非就是增、删、改、查。那vim怎么快速有效增、删、改、查呢?


    这里  指的是从vim命令模式切换到输入模式的方法。( 通过 [Esc] 键切换到命令模式 )

    如当前打开的文本如下:

    [V]im is a highly configurable text editor for efficiently creating

    and changing any kind of text.

    ( 方括号表示光标所在位置)

    i    光标左侧输入

    I    光标所在行的行首输入(等效组合键:0 + i

    a    光标右侧输入

    A    光标所在行的行尾输入(等效组合键:$ + a

    o    在光标所在行的下一行增添新行,光标位于新行的行首

    O    在光标所在行的上一行增添新行,光标位于新行的行首

    那问题来了? 如果在光标所在行的下一行不添加新行,而是把光标移动到旧行的行首,怎么操作呢?这时需要组合键 j + I (光标移动到下一行的行首),同样 k + I (光标移动到上一行的行首)

    小写 i 表示 insert,大写 I 可以记为小写的 i 的夸张动作,i 在光标左侧输入,I 则在光标所在行最左侧输入。小写 a 表示 append,大写 A 可以记为小写 a 的夸张动作,a 在光标右侧输入,A 则在光标所在行最右侧输入。

    大写命令可以记为小写命令的夸张动作(如 a 和 A)或反向动作(如 o 和 O)

    w + i    光标所在单词的下一个单词的词首输入(w 表示 word,向右移动一个word)

    b + i    光标所在单词的上一个单词的词首输入 (b 是 w的反向动作backward,向左移动一个word)

    e + a    光标所在单词的词尾输入 (e 表示 end,向右移动到词尾)


    dd    删除光标所在行

    ndd    n 是数字,删除光标所在行和向下 n 行

    d0    删除光标所在处到所在行的行首

    d$    删除光标所在处到所在行的行尾 (等效命令 D )

    dG    删除当前行到末行之间的所有数据

    d1G    删除当前行到首行之间的所有数据

    dw,de    删除光标所在位置至词尾, 区别是光标删除后停留位置。dw光标停留在下一个单词的词首,de光标停留在向右数第一个空格


    cc    删除光标所在行,并切换到输入模式

    cw    删除光标位置至单词词尾,并切换到输入模式

    C    删除光标位置至本行末尾,并切换到输入模式 (大写 C)

    替换

    :s/cerr/cout    把当前行第一次出现的 cerr 替换为 cout (s 表示 substitute 替换)

    :s/cerr/cout/g    把当前行所有出现的 cerr 全部替换为 cout (g global全局)

    :50,100s/cerr/cout/g    把第50行至100行的所有 cerr 替换为 cout

    :1,$s/cerr/cout/g    整个文件中的 cerr 替换为cout (% 等价于 1,$。所以还可以写成:%s/cerr/cout/g

    在替换命令尾部加上c (confirm 用于确认),在替换每一个old前都会提示并确认:

    :%s/cerr/cout/gc 替换前提示?y表示替换,n表示放弃


    字符查询

    f + [字符]    在光标所在行向右搜索第一个相同字符

    如vim内容如下;

    [v]im is interesting  and fun.

    (方括号表示光标所在位置)

    在命令模式下输入 ft 光标移动至 t 字符

    vim is in[t]eresting  and fun.

    字符串查询

    /pattern + [Enter]

    pattern 为所有查询字符串,Enter键后被匹配字符串高亮显示,小写 n 查找下一个匹配项,大写 查找上一个匹配项

    统计字符串出现次数

    :%s/pattern//gn    

    (% 表示 1,$

        s 表示 substitute 替换

        /pattern所要查询字符串

        // 替代文本应该放在这里,两个斜杠中间没有任何字符表示无替代文本

        g 全局内替换,没有这个参数,只在每行第一个匹配进行替换。Replace all occurences in the line. Without this argument, replacement occurs only for the first occurence in each line.

        n 计数,统计)

    相关文章

      网友评论

          本文标题:vim 增删改查

          本文链接:https://www.haomeiwen.com/subject/khrrxqtx.html