• vim命令汇总


    文章首发:http://www.cnblogs.com/sprying/p/3864631.html 

    上一次学习vim还是快一年了,倒腾了一个月之后就没碰过。现在重新汇总下vim命令。

    1、有些命令回车后才有效果

    2、vim编辑有三个状态:Normal、Insert、Visual

    打开文件

    Normal模式下

    • :e
    • :vi

    保存关闭文件

    • :w

    • :q

    • :wq ZZ 保存和退出

    • :q! 放弃修改并退出

    • :qa! 强制退出所有打开的文件

    • :close

    • :close[!] 最后一个窗口不关闭

    • :hide 最后一个窗口不关闭,可以关闭当前屏幕窗口。

    • :on[ly][!] 除了当前窗口所有其他窗口都关闭。

    缓存操作

    • :ls 显示缓存
    • :b [filename] 打开缓存文件
    • :bn (n a number) move to nth buffer 打开指定数字的缓存
    • :bp previous buffer 打开上一个缓存
    • :bn next buffer 打开下一个缓存

    移动光标

    • w 下一个词的首字母
    • W 下一个词(跳过标点)
    • b 当前词的首字母
    • B 前一个词(跳过标点)
    • e 当前词的尾端
    • E 当前词的尾端(跳过标点)

    注意: w e 是以字母、数字、_组成的为单词, 若要以blank空格符,用大写

    • h 左移一字符

    • l 右移一字符

    • j 下移一行

    • k 上移一行

    • gd 调到光标所在词定义位子go define

    • gg 到文档顶部

    • G 到文档底部

    • xgg xG :x 到第x行(x是行号)

    • 10% 移动到文件大约10%的行位置

    • Ctrl + d 下翻半屏

    • Ctrl + u 上翻半屏

    • Ctrl + f 下翻一屏

    • Ctrl + b 上翻一屏

    • Ctrl + g 查看文件url、行数信息

    • H 命令移动光标到视野内的第一行,

    • M 移动到视野内的中部,

    • L 移动光标到视野内的最后一行。

    移动屏幕

     光标所在的行位不变
    • Ctrl + e 上滚一行

    • Ctrl + y 下滚一行

    • zt 命令将光标所在行移动到屏幕的顶部,

    • zz 命令将光标所在行移动到屏幕的中部,

    • zb 将光标移动到屏幕的底部。

    • nz 回车,将第n行滚动至屏幕顶部

    插入

    • i 光标位置前插入
    • I 行首字符前插入
    • a 光标位置后插入
    • A 本行末尾插入
    • o 向下插入一行
    • O 向上插入一行

    删除

    • x dl 光标下的字符

    • X dh 删除光标前字符

    • dw 删除当前光标下的词,由光标位置起,不包括光标位字符

    • db de

    • dnl 向右删除n个字母

    • dnh 向左删除n个字母

    • d$ D 删除光标到行尾

    • dd 删除当前行

    • dnj 向下删除n行

    • dnk 向上删除n行

    • dG 从当前光标位置一直删除到文件的末尾

    • dgg 从当前光标位置一直删除到文件的开始

    • 6dw 删除6个word

    • diw 删除光标上的单词(不包括空格)

    • daw 删除光标上的单词(包括空格)

    • df 从当前光标位置上的字符一直删除到指定的字符(包括指定字符)

    • dt 从当前光标位置删除到指定字符的前一个字符

    • J 删除换行符,合并两行

    • %s/s+$// 删除全文行尾空格,%表示作用于整个文件,//表示替换的是空白

    • %s/^s+// 删除全文行首空格

    撤销和重做

    • u 撤销
    • U ctrl + r 恢复撤销

    自动提示

    在Insert模式下,输入字符,Ctrl pCtrl n代码提示

    修改

    cl(s) ch c3w cb ciw caw df dt cc(S) c$(C) cG

    复制粘贴

    • yy Y 复制当前行
    • yw 复制当前光标下的词
    • yG 拷贝到文件的末尾
    • ygg 拷贝到文件的开头
    • 0y$
    • y2/foo 拷贝2个foo之间的字符串
    • p 粘贴
    • P 粘贴在当前位置之前Go

    替换

    预定义类含义
    :s/old/new 将当前行中查找到第一个字符”old”串替换为”new”
    :s/old/new/g 将当前行中查找到的所有字符串”old”替换为”new”
    :#,#s/old/new/g 在行号”#,#”范围内替换所有的字符串”old”为“new”
    :%s/old/new/g 在整个文件范围内替换所有的字符串”old“为”new”
    :s/old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
    • r 输入字符替换光标下的字符,然后返回Normal模式, 如果光标选中一段字符,输入的一个字符会替换选择。

    • nr 输入字符会替换光标起的n个字符

    • R 会一直替换,按delete还原。 如果选中几个字符,则会进入visual模式,删除当前行,进入Insert模式。

    • :s/p1/p2/g 当前行中所有p1均用p2替代

    • :n1,n2s/p1/p2/g 将第n1至n2行中所有p1均用p2替代

    • g/p1/s//p2/g 将文件中所有p1均用p2替换

    搜索

    • /XXXX 搜索xxxx,可以用n下一个,N上一个,2n下第二个

    • /di 可查找到media

    • /^di 只匹配行首

    • /di$ 只匹配行未

    • /^di$ 仅仅匹配包括di的行并不带空格

    • /d.i 匹配第一个字符是d,第二个字符任意,第三个是i的字符串

    • /di. 匹配带特殊字符.的字符串di.

    • # 向前搜索光标当前所在的字,向后查找当前光标的第2个单词,可以输入”2#“

    • * 向后搜索光标当前所在的字

    • fa 查找当前行光标所在位置的下一个f(ind) a,这里f可用t

    • Fa 查找当前行光标所在位置的上一个a

    标记和宏(macro)

    • ma 将当前位置标记为a,26个字母都可以作为标记,mbmc等等

    • ‘a 跳转到a标记的位置

    • qa 将之后的操作都记录下来,直到继续按q

    • @a 执行刚刚记录在a里面的键盘操作

    • @@ 执行上一次的macro操作

        Ctrl a 数字加1
      
        qaYp<C-a>q
      
        1. qa开始录制
        2. Yp 复制行.
        3. <C-a> 增加1.
        4. q 停止录制.
        5. @a → 在1下面写下 2
        6. @@ → 在2 正面写下3
      
        现在做100@@ 会创建新的100行,并把数据增加到 103.

    高效编辑

    • di* 光标在""之前或之中,则删除""之间的内容

    • yi{ 光标在{}之前或之中,则复制{}之间的内容

    • vi[ 光标在[]之前或之中,则选中[]之间的内容 i代表inner,可编辑的光标有 '"()[]{}<>i可替换成a,就连配符号一起操作

    • dtx 删除字符直到遇见光标之后的第一个x字符

    • ytx 复制字符直到遇见光标之后的第一个x字符

    • :n1,n2 co n3 将n1行到n2行之间的内容拷贝到第n3行下

    • :n1,n2 m n3 将n1行到n2行之间的内容移至到第n3行下

    • :n1,n2 d 将n1行到n2行之间的内容删除

    • :n1,n2 w!command 将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入

    • :r!command 将命令command的输出结果放到当前行

    • 5w 相当于按五次w键;

    • 6j 下移6行,相当于按六次j;

    • 3J 大写J,本来是将下一行与当前行合并,加上数量,就是重复操作3次;

    • 6dw d6w 结果是一样,就是删除6个word;

    剩下的无数情况,自己类推吧

    显示页码

    • :set nu
    • :set nonu

    其它

    • ~ 修改选中的字符的大小写,原来大写的转换成小写,原来小写的转成大写。在Visual模式和Normal模式下都能生效。 注意,只有tiledeop设置后,这个才能成为一个操作命令,才可用该命令与其他光标移动的命令组合使用。
    • g~ 修改选中的字符的大小写操作命令,原来大写的转换成小写,原来小写的转成大写。
    • gu 修改选中的字符为小写操作命令。
    • gU 修改选中的字符为大写操作命令。
    • ! 过滤警告操作命令
    • gq 选中文本格式化,文本拼接组合成句子或段落命令。在Normal模式和Visual模式下都能生效。
    • > 选中文本向右Tab缩进。在Normal模式和Visual模式下都能生效。
    • < 选中文本向左Tab缩进。在Normal模式和Visual模式下都能生效。
    • = 操作:选中文本自动缩进。 按v进入visual状态,选择多行,用>或<缩进或缩出
  • 相关阅读:
    史上最简单的Hibernate入门简单介绍
    极客Web前端开发资源大荟萃
    ios7 UIScrollView 尺寸问题
    用ahk脚本自己主动删除flashcookies
    CSS文字样式
    Windows 10 安装
    万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》
    算法实验 层序列表问题(二叉树)
    git配置别名
    git忽略特殊文件
  • 原文地址:https://www.cnblogs.com/sprying/p/3864631.html
Copyright © 2020-2023  润新知