zoukankan      html  css  js  c++  java
  • Vim 命令整理

    1. 文件命令
    2. 模式切换
    3. 移动命令
    4. 书签命令
    5. 修改命令
    6. 可视化操作
    7. 区域选择
    8. 宏命令
    9. 分屏
    10. 系统设置命令

    1. 文件命令

    [:]开始的命令需要输入[Enter]结束
     
    :q:退出
    :q!:退出不保存
    :qa!:退出所有文件不保存
    :w:保存
    :e <file>:关闭当前文件并打开另一个文件
    :saveas <file>:另存为<file>
     
    :wq 或 :x 或 ZZ:保存并退出(ZZ不需要冒号[:])
     
    :bn或:n:打开多个文件时,切换到下一个文件
    :bp:多个文件时,切换到上一个文件
     
    sudo权限强制写入::w !sudo tee % (!sudo - 执行shell命令sudo,tee - 将:w结果重定向,% - 当前文件)
    :help <command>:显示命令帮助
     
    :!<command>:执行一个Shell命令
    :bash:启运一个shell而不退出vi。exit 命令后回到vim
    :[n]:冒号后跟数字表示要到第几行,如果跟1,表示到文件头,如果跟$,表示到文件尾
    Ctrl+G:可以显示当前行在整个文件的百分比

    2. 模式切换

    2.1 Normal模式 转 插入模式

    i:在当前字符的左边插入
    I:在当前行首插入
    a:在当前字符的右边插入
    A:在当前行尾插入
    o:在当前行下面插入一个新行
    O:在当前行上面插入一个新行
    <C-V>c:输入特殊字符^C
    <C-P>或<C-N>:自动补齐

    2.2 插入模式 转 Normal模式

    [ESC]

    3. 移动命令

    N<command>:重复某个移动或修改命令N次
    h、j、k、l:左、下、上、右 移动
    g[h、j、k、l]:让移动相对于屏幕显示的行数而不是vim内部的行数

    3.1 行内移动

    w:移动到下一个单词开头
    e:移动到下一个单词结尾
    b:移动到前一个单词开头
    W/E/B:移动时单词以空格分隔,默认只包含字母、数字和下划线

    0:移动到当前行首
    ^:移动到当前行的第一个非空字符
    $:移动到行尾
    g_:移动到当前行尾第一个非空字符

    ):移动光标到下一个句子,使用句号[.]或换行分隔
    ( :移动光标到上一个句子,使用句号[.]或换行分隔 

    3.2 文件内移动

    G:到文件尾
    [n]G:移动光标到指定的行(n)。(比如 10G 就是到第 10 行)
    gg:到文件首
     
    H:移动光标到屏幕上面
    M:移动光标到屏幕中间
    L:移动光标到屏幕下面
     
    <C-F>:向下移动一屏
    <C-B>:向上移动一屏

    3.3 查找并移动

    行内查找

    使用[;]重复上一个 f/t/F/T 命令
    fx:移动光标到当前行的下一个 x 处。x 可以是任意一个字母,而且你可以
    tx:和上面的命令类似,但是是移动到 x 的左边一个位置(这真的很有用)
    Fx:和 fx 类似,不过是往回找
    Tx:和 tx 类似,往回找的 x 的右边一个位置

    文件内查找

    %:跳转到配对的括号
    [[:跳转到代码块的开头去(但要求代码块中'{'必须单独占一行)
    '':跳转到光标上次停靠位置的行首字母处, 是两个', 而不是一个"

    *:读取光标处的字符串,并且移动光标到它再次出现的地方。重复搜索按[n]
    #:和上面的类似,但是是往反方向寻找。重复搜索按[n]
    gd或gD:跳转到光标所在局部变量(或任意字符串)的定义处

    /text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。重复搜索按[n]
    ?text:和上面类似,但是是反方向

    4. 书签命令

    ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。
    `a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。
    `.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。

    5. 修改命令

    .:重复上一次修改命令
    N<command>:重复某个移动或修改命令N次,还可以重复其他命令,如10iza[ESC],表示重复插入10次za。
    u:撤销上次修改
    U:撤销当前行的所有修改
    <C-R>:(撤销后)重做上次修改

    5.1 格式控制

    >>:增加缩进,"x>>"表示增加以下x行的缩进
    <<:减少缩进,"x<<"表示减少以下x行的缩进 
     
    合并下一行与当前行: J 

    5.2 剪切(删除)、复制、粘贴

    *motion可以是任意移动命令,如^、$、G、w、fx
    *剪切板(又叫寄存器[register]),[:reg]列出使用中的寄存器及内容,使用"ayy将当前行复制到寄存器a,使用"ap粘贴寄存器a的内容
    d{motion}:剪切,把motion"掠过"的文本剪切到剪切板
    c{motion}:剪切并进入插入模式
    dd:剪切当前行
    cc:剪切当前行并进入插入模式
    D:剪切光标当前位置到行尾,类似于[d$]
    C:剪切光标当前位置到行尾并进入插入模式,类似于[c$]
    x:剪切当前字符. (类似于命令模式的退格(backspace)键)
    s:剪切当前字符并进入插入模式

    y{motion}:复制,同上
    yy:复制当前行到剪切板
    Y:复制行到剪切板,类似于[yy]
     
    p:粘贴到当前位置之后
    P:粘贴到当前位置之前
    ]p:和p相似, 但自动调整粘贴代码的缩进
    ]P:和P相似, 但自动调整粘贴代码的缩进

    5.3 查找替换

    :%s/word1/word2/g:全文搜索word1并以word2替换之
    :[n],[m]s/word1/word2/g:仅在第a行到第b行间搜索并替换
    字符串查找时,” ” 是换行,” ” 是回车,也就是经常会看到的 ^M。
    字符串替换时,” ” 是换行,’ ” 是空字符(0×00)
     
    删除空行:g/^s*$/d

    6. 可视化操作

    选择文本

    v:字符选择
    V:行选择
    <C-V>:块选择,可以选择任意矩形块

    操作

    d/c/y:删除或复制
    gu或gU:全变小写或大写 
    J:连接所有行
    >或<:左右缩进
    =:自动缩进

    实例

    ^ 选择 Ixx[ESC]:行首插入
    选择 Ixx[ESC]:块前插入xx
    选择 Axx[ESC]:块末插入xx
    选择 $ Axx[ESC]:行末插入

    7. 区域选择

    <action> [n] a/i <object>:选择object所指目标范围内的n重内容,如单词、句子、括号()、[]
    <action>:d - 删除,y - 拷贝,v - 可视化选择
    a/i:a - 包含object,i - 不包含object
    <object>:w - 单词,W - 空格分隔单词,s - 句子,p - 段落,"/'/)/}/] - 括号或引号

    8. 宏命令

    qa:开始录制宏并保存在寄存器[a]
    q:结束录制
    @a:回放存在寄存器a的宏
    @@:回放最新的宏
     
    实例
    qaYp<C-A>q 100@@:将1行"1"变成101行数字序列:1 2 3 ... 101

    9. 分屏

    vim -On file1 file2 ...:打开若干文件,并垂直分屏
    vim -on file1 file2 ...:打开若干文件,并水平分屏
    :new:创建空白水平分屏
    :vsplit(:vsp) <file>:创建垂直分屏,并打开文件<file>,默认为当前文件
    :sp(split) <file>:创建水平分屏,并打开文件<file>,默认为当前文件
     
    基本都是<C-W>然后加上某一个按键字母,触发一个功能
    <C-W> c/q或:q:关闭当前窗口
    <C-W> o或:only:关闭所有其他窗口
    <C-W> s/v:水平/垂直分屏当前文件
     
    <C-W> h/j/k/l:移动光标到左/下/上/右边分屏
    <C-W> w:移动光标到顺序下一个分屏
     
    <C-W> H/J/K/L:移动分屏到左/下/上/右边
    <C-W> =:所有分屏大小相等
    <C-W> +/-:增加/减少分屏高度
    <C-W> >/<:增加/减少分屏宽度

    10. 系统设置命令

    在Normal模式下使用[:set xxx]设置开启,使用[:set noxxx]设置关闭,也可写在~/.vimrc文件中(文件中不要冒号[:])
    syntax enable
    syntax on
    set ic                  "忽略大小写(ignore case)
    set noic               "不忽略大小写
    set nu               "显示行号     
    set hlsearch
    set expandtab      "设置tab 
    set shiftwidth=4   "设置tab的间隔 
    set ts=4               "四个空格代表一个tab(tabstop)
    set ai                   "设置自动缩进(autoindent)  
    set ls=2               "总是显示文件名(也可以用 Ctrl+G 或 :f)
     
  • 相关阅读:
    destoon代码从头到尾捋一遍
    php中foreach()函数与Array数组经典案例讲解
    刷题比赛
    #Math
    福慧双修(both)
    NOIP17提高模拟训练18 长途旅行(travel)
    NOIP提高组模拟训练18 正确答案(answer)
    NOIP17提高组模拟赛17 -乐曲创作(music)
    #2017 Multi-University Training Contest
    CodeForces
  • 原文地址:https://www.cnblogs.com/zhuyuanhao/p/5814987.html
Copyright © 2011-2022 走看看