zoukankan      html  css  js  c++  java
  • vim常用命令

    VIM一般分几种模式,通过不同模式来区分输入的到底是文字还是命令:
    1. Normal mode(common mode,以下简称 c-mode):
    一进入 VIM 就是处于 c-mode,只能输入指令,不能输入文字。这些指令可能是光标移动的指令,也可能是编辑指令或寻找替换指令。
    2. Insert mode(i-mode):
    按 i/a/o 会进入 i-mode,此时可以在编辑区输入文字,按 Esc 会回到 c-mode。
    3. Ed mode(common-line mode,e-mode):
    按:进入 e-mode,VIM命令提示区(编辑区最下方)会有一个冒号:出现,可以输入命令行命令,按 Esc 回 c-mode。
    4.replace mode
    按R进入替换模式,Esc返回c-mode

    tips:在vim中Esc键需要经常使用,可以通过修改注册表将Esc键和Caps键的功能换一下。


    光标在字符间移动
    k    上移 
    h    左移 (Backspace )
    l    右移 (空格键 )
    j    下移

    光标在单词间移动(光标可以跨行,默认一个单词由字母,数字和下划线组成)
    E e(end) 先移动到当前单词结尾,若已经在结尾,则移动到下一个单词结尾
    B b(begin) 倒退到当前单词的开头,若已经在开头,则移动到上一个单词开头
    W w(word) 移动到下一个单词开头,标点符号也算一个单词
    注意:大写的命令仅以空格作为单词间的分隔符,其他标点符号作为单词的一部分。


    整行移动
    0      移动到当前行首
    ^      移动到当前行的第一个非blank处
    $      移动到当前行行尾
    +      移动到下一行开头(主键盘区shift + ”=键”,Enter也可以)
    -      移动到上一行开头
    n|      移动到当前行的第n列

    ctrl + o|i  光标移动到上一次位置

    滚屏(光标跟着代码走)
    Ctrl+f(forward)      往前滚动一整屏
    Ctrl+b(backward)      往回滚动一整屏
    Ctrl+d(down)        往上滚动半屏
    Ctrl+u(up)         往下滚动半屏
    Ctrl+e           往后滚动一行
    Ctrl+y           往前滚动一行

    用z调整行
    zt(top)           将光标所在行移动到屏幕顶端
    zz             将光标所在行移动到屏幕中间
    zb(bottom)         将光标所在行移动到屏幕低端

    在屏幕范围移动光标(不会滚屏)
    H(hight)     将光标移动到屏幕顶端的行
    M(middle)    移动到屏幕中央的行
    L(low)      移动到屏幕底端的行
    nH        移动到屏幕顶端往下的第n行
    nL        移动到屏幕顶端往上的第n行

    根据文本移动光标
    % : 另一个对应的括号,包括(, {, [

    根据文本块移动光标(编程时用得不多,编辑时使用)
    文本块也就是句子、段落、小节等
    (  移动到当前句子开头
    )  移动到下一个句子开头
    {   移动到当前这一段开头
    }   移动到下一段开头
    [[  移动到当前这一节的开头
    ]]  移动到下一节的开头
    其中,VIM以? . !等符号来标记一个句子,空白行来标记一个段落。

    根据行号来移动
    G    移动到文本末尾
    gg   移动到文本开头
    nG    移动到第n行(同:n + enter命令一样)
    Ctrl+g  VIM显示区显示当前行的完整信息(从根盘符一直到当前行)
    tips:``两个单反引号可以返回到使用G之前的位置,只能记住一个

    插入
    字符位置插入
    i  在光标之前插入
    I  在一行的开头处插入
    a  在光标之后插入
    A  在一行的结尾处追加
    o  在光标所在位置的下一行打开新行插入
    O  在光标所在位置的上一行打开新行插入
    r  替换光标所在处一个字符

    合并行
    J  将下一行内容合并到当前行,中间空一个空格

    字符删除
    x  剪切光标所在处字符,不会自动跨行
    X  剪切光标前一个字符
    s  删除光标所在字符并进入插入模式(可以和v命令合用)
    S  删除光标所在行并进入插入模式


    单词删除
    dw  从光标所在字符开始删除到下一个单词开头
    de  删除到本单词末尾(标点也算一个单词)
    dE  删除到本单词末尾(标点不算单词)
    db  删除到前一个单词
    dB  删除到前一个单词包括标点在内

    行删除
    dd  剪切本行所有内容
    d$  剪切本行光标位置(含)之后的所有内容(同shift D)
    d0  剪切本行光标位置(不含)之前的所有内容

    搜索

    fa  在光标所在行搜索下一个字符a,不跨行
    *    往后匹配一个光标当前所在的单词
    #    往前匹配一个光标当前所在的单词
    /xyz  往光标下搜索xyz字符串
    ?xyz  往光标上搜索xyz字符串
    gd   跳到该单词定义的位置
    n    下一个搜素目标
    N    上一个搜索目标
    :set hls    打开高亮
    :set nohls   关闭高亮

    标记

    ma  将光标当前位置标记为a
    'a    单引号加标记号,跳到标记处

    复制(y)与粘贴
    yw   复制从光标开始(含)到词尾的字符
    yb   复制从光标开始(不含)到词首的字符
    yy   将当前行复制到缓存区
    nyy  将当前行向下n行复制到缓冲区
    nyw  复制从光标开始的n个单词(标点符号算一个单词)
    y^   复制从光标到行首的内容(y$到行尾)
    p    在光标之后粘贴剪切板里的内容
    P    在光标之前粘贴剪切板里的内容
    tips:含后不含前(往前不含当前光标所在字符,往后含当前光标所在字符)
    另外可以给缓存区做标记,方便以后引用,需要用到双引号:
    "ayy, "byy等,使用时"ap或"bp,粘贴不同的内容。

    系统粘贴板
    从系统粘贴板复制到vim中:shift + Insert 或 "+p
    从vim复制到系统粘贴板:"+y

    替换
    :s/old/new     用new替换当前行中首次出现的old
    :s/old/new/g    用new替换行中所有的old
    :n,m s/old/new/g  用new替换从n到m行里所有的old
    :%s/old/new/gic   用new替换当前文件里所有的old,c为confirm

    修改(c):指先删除,再进入编辑
    通过c指令后面的参数,删除相应的内容,然后进入编辑模式修改。
    C或c$     对当前行光标后面的内容进行修改
    c0或 c^   对从光标处到当前行行首的内容进行修改
    cc 或S    对当前行进行修改
    cw      对光标所在字符到该单词结束部分进行修改(先删除再进入编辑状态)
    cfx 或cFx  对从光标到下一个字符 x 之间的文本进行修改
    cFx      对从光标到上一个字符 x 之间的文本进行修改
    cG      表示对当前行至文本末行内容进行修改
    tips:c 命令所删除的数据都存在缓冲区, 可以粘贴使用。

    重复
    .      重复上一次的命令
    N<command>  重复某个命令N次,esc键执行该组合命令,enter键表示光标换行。

      10I*<esc>:在一行开头输入十个*
      5o###<esc>:在下5行中每一行开头插入###
      5h:左移5次
      n+:向下跳n行
      n-:向上跳n行
      nx:剪切从光标开始的n个字符
      3dd:删除3行

    撤销
    u  撤销上一步操作,可执行多次
    U  撤销对当前行的所有操作
    Ctrl+r 反撤销  
    To undo the undo's, type: CTRL-R

    visual模式
    在可视化模式下,通过高亮显示,不但可以看到将要被操作的对象,而且可以对选中的文本块整体进行操作。
    v  进入字符可视化模式,文本选择是以字符为单位。
    V  进入行可视化模式,文本选择是以行为单位。
    ctrl-V或ctrl-Q  进入块可视化模式
    ctrl + v:选中指定一列
    gv    再次选中前一次可视化模式时选择的文本

    可视模式下:

    o光标移动到块区的对角,O移动到水平的另一边。
    vi[或vi’或vi}  选中当前光标所在的整个[]或’’或{}内的内容
    va[或va’或va}  同上,而且符号本身也会被选中
    viw  选中一个单词

    代码格式化
    对代码进行缩进处理,用等号命令: =
      全部格式化 : gg=G
      对当前行格式化: ==
      对多行格式化: [count] ==
      对选区格式化:选中后 [count] > 右移count个tab

    分屏

    :sp  同一个文档垂直分隔成两个屏幕,可以显示不同内容

    打开/保存/退出/改变文件
    :e <path/to/file>   打开一个文件
    :w  保存文件
    :saveas <path/to/file>  另存为 <path/to/file>
    :wq  保存并退出
    :q!  退出不保存
    :qa!  强行退出所有的正在编辑的文件,就算别的文件有更改。
    :bn 和 :bp  可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。

  • 相关阅读:
    软件补丁问题(网络流24题)
    飞行员配对方案问题(网络流24题)
    [NOIp普及组2011]瑞士轮
    如何在Linux上安装QQ
    [洛谷P2420] 让我们异或吧
    高斯消元
    [SCOI2014]方伯伯的OJ
    [USACO1.3]虫洞
    KMP算法讲解
    [洛谷P1382] 楼房
  • 原文地址:https://www.cnblogs.com/kevin2chen/p/6709968.html
Copyright © 2011-2022 走看看