zoukankan      html  css  js  c++  java
  • 键盘是vim的舞台

    下面的命令仅指限于noramal mode
    <ESC> : 进入Normal mode( Bee模式, 因为在某些情况下, 只能根据这一声Bee去判断是否在Normal mode )
     
    ` : go to mark, 跳到标记处, `x 将光标移动到标记x处
    ~ : 大小写转换,相当实用
     
     
    ! : external filter, 执行一个外部脚本, 并且将结果输入到当前光标所在处,
    很适合拿来写log 吧
     
     
    @ : paly macro, 执行宏, 比方说之前录好一个宏Q, 现在只要输入@Q 就可以执行了, @的前面接受数字参数, 3@Q就是执行3次宏Q
     
     
    # : prev ident, 向上完整匹配光标所在处的单词, g# 向上部分匹配光标所在处的单词
     
     
    $ : eol, 跳到光标所在行的行尾, 在正则表达式中$ 用来匹配一行的行尾, 1$等价于$, 2$表示移动到下一行的行尾, 以此类推
     
     
    % : go to match, 当光标位于一个配对符号上面时, %可以跳到另一个配对的符号上
     
     
    ^ : "soft"bol, 跳到光标所在行的行首, 之所以称为soft是因为这里跳到的行首不包含空格, 注意和0的区别, 另外|也可以移动到行首
     
     
    & : reapeat, 相当于执行ex命令:g, 即重复上一个全局操作, 如果用作替换, 这倒是比:s<ENTER>省了两个按键
     
     
    * : next ident, 查找光标所在单词. 譬如hello, 那么相当于发出一条命令/<hello>, g* 向下部分匹配光标所在处的单词
     
     
    ( : begin sentence, 跳到当前光标所在句的句首
     
     
    ) : end sentenct, 跳到当前光标所在句的句尾
    0 : "hard"bol, 跳到光标所在行的行尾, 和^ 不同, 0是包含空格的
     
     
    _ : "soft"bol down, 往下跳到指定行的行首, 注意是"soft", 使用时前面必要一个数字参数, 2_ 代表跳到下一行行首, 关键是行首
    - : prev line, 往上移动, 和K 的用法一样
     
     
    + : next line, 往下移动,和J 的用法一样
    = : auto format, 有待补充
     
     
    Q : ex mode, 进入到远古编辑模式, 当年的设备还只是字符设备, 注意这个键在window gvim被映射为gq 了
    Command-Line : 命令行模式, 普通模式下按冒号(:)进入Command-Line模式,可以输入各种命令
    Ex Mode : 普通模式下按Q进入Ex模式,其实就是多行的Command-Line模式
    q : record macro, 录制宏, 例子qq, 就是录制一个宏, 这个宏的名字是q, 名字可以取任意字母, 这就意味着最多可以录制26个宏
     
     
    w : next word, 下一个单词的开头
    W : next WORD, 下一个"单词"的开头
     
     
    e : next word, 下一个单词的结尾, 如果光标在本单词的结尾,则跳到下一个单词的结尾
    E : next WORD, 下一个"单词"的结尾
     
     
    R : replace mode, 具体参照prativalvim.note
    r : replace char, 例子ra, 用a替换当前光标所在字符
     
     
    T : back till, 反向寻找一行中的一个字符,并且跳到这个字符的前一个字符
    t : back till, 正向寻找一行中的一个字符,并且跳到这个字符的前一个字符
     
     
    Y : yank line, 复制一行, 和yy 一样
    y : yank, 遵循 motion + movement 的模式, 自行补充数字参数
     
     
    U : undo line, 很少用,撤销在一行上的所有操作
    u : undo, 撤销上一个操作.
     
     
    I : insert at bol, 在一行的行首插入
    i : insert mode, 在光标前插入
     
     
    O : open above,在光标所在行的上一行插入一行
    o : open below,在光标所在行的下一行插入一行
     
     
    P : put before, 可以在前面指定寄存器的名字, 譬如"1p , 就是将寄存器1的内容粘贴下来
    p : put after
     
     
    { : begin parag, 跳到当前光标所在段的段首
    [ : misc, 有待补充
     
     
    } : end parag, 跳到当前光标所在段的段尾
    [: misc, 有待补充
     
     
    A : append at eol, 在一行的行尾后插入
    a : append, 在光标后面插入
     
     
    S : subst line, 替换一整行, 相当于cc
    s : subst char, 替换光标所在字符, 相当于 cl
     
     
    D : delte to eol, 从光标所在处删除到行尾
    d : delete, 遵循 motion + movement 的模式, 自行补充数字参数, daw删除一个单词及其后面的空格, 即便光标位于该单词的中间, diw删除一个单词但不含空格, dj删除上一行, dk删除下一行格
     
     
    F : "back" find char, 在一行中反向寻找字符
    f : find char, 在一行中正向寻找字符
     
     
    G : eof/goto ln, G跳到文件的末尾, nG跳到第n行
    g : extra cmds:
    gg 跳到文件的第一行;
    ge 相当于反向的e;
    gt 跳到前一个tab, gt接受数字参数, 2gt跳转到顺数第二个tab
    gT 跳到后一个tab
    gj 是按屏幕向下及向上移动
    gk 是按屏幕向下及向上移动
    g0 移动到屏幕行的行首
    g^ 移动到屏幕行的第一个非空白字符
    g$ 移动到屏幕行的行尾
     
     
    H : screen top, 跳到当前屏幕的最顶行
    h : 向左移动一个字符
     
     
    J : join lines, 将光标所在行的下一行合并到光标所在行的行尾
    j : 向下跳一行
     
     
    K : help
    k : 向上跳一行
     
     
    L : screen bottom, 跳到当前屏幕的最底行
    l : 向右移动一个字符
     
     
    : : ex cmd line, 进入到命令行模式
    ; : repeat t/T/f/F, 重复这四个操作, 和, 相反
     
     
    " : reg.spec, 寄存器空间, "2p就是取出第二个寄存器, 还有一种用法是采用字母命令的空间, 示例: "f4yy  复制四行到缓冲区f, "fp  把缓冲区中的文本粘贴到当前光标的下面
    ' : goto mk.bol, '' 跳回最后一次操作的行的行首, 'x 将光标移动到标记x所在行的第一个字符
     
     
    | : bol/goto col, 如果没有数字参数就跳到一行的开头, 如果有数字参数就跳到指定的列
    : not used!,<leader>
     
     
    Z : quit, 后面还要接一个参数, 目前知道ZZ相当于:wq, ZQ相当于:q!  z : extra cmds, 又一个leader, zt:scroll cursor to top, zb: bottom, zz:center
     
     
    X : backspace, 退格并删除字符
    x : delete char, 删除光标所在字符
     
     
    C : change to eol, 从光标处一直删除到所在行的行尾,然后进入insert mode
    c : change, 遵循 motion + movement 的模式, 自行补充数字参数
     
     
    V : visual lines, 行选可视模式
    v : visual mode, 字符可视模式
     
     
    B 和 b : prev word, 跳到前一个word的第一个字符
     
     
    N : prev find, 用/ 或者? 全文检索后,N使得光标跳到上一个匹配的word的首个字符
    n : next find, 用/ 或者? 全文检索后,N使得光标跳到下一个匹配的word的首个字符
     
     
    M : screen mid, 跳到当前屏幕的中间一行
    m : set mark, 对文件中的某一行做标记, 比方m1 ,以后就可以用`1 快速导航到这一行
     
     
    < : unident, 向左缩进一个制表位
    , : reverse t/T/f/F, 执行倒序的操作
     
     
    > : indent, 向右缩进一个制表位
    . : repeat cmd, 重复上一个操作, 很实用
     
     
    ? : find(rev.), 反向全文检索, 如果你嫌弃高亮碍眼, :noh可以暂时消除高亮
    / : find, 正向全文检索
     
     
    ex mode 下的常用命令:(如果说vim是上古神器, 那么ex就是远古兵器, 参考另外ex.note)
    :w 保存
    :q 退出
    :q! 不保存并且退出
    :e [filename] 打开文件filenme
    :s/x/y/g 将整个文件中的x用y替换, g处可选的参数:g 表示替换该行所有的符合的目标字符串, p表示列印, c表示每次执行替换的时候都需要请求确认, 如果这个地方什么都不写,表示只是替换第一个匹配到的字符串, 还可以在s前面加上参数, 如:1,5s/x/y/g, 意思就是将1至5行的x替换为y
    :h 打开vim的帮助文档
    :new 在vim中新建一个文档, 具体Vim会开一个split
    :sav 另存为
     
     
    另外一些比较常用的命令
    ^R : redo(vim only)
    ^F : page down
    ^B : page up
    ^E : scroll line up
    ^Y : scroll line down, 同样在window gvim中被映射了
    ^V : block-visual mode(vim only)
     
     
    关于tab的命令:
    :tabnew   [++opt选项] [+cmd]文件 建立新的tab
    :tabc      关闭当前的tab
    :tabo      关闭所有其他的tab, 最后的字母o可以理解为only
    :tabs      查看所有打开的tab
    :tabp      前一个
    :tabn      后一个
    使用noraml mode下的 Ngt 来进行切换.
    另外,如果需要在当前的tab页中也可以打开多个文件,文件之间用 ctrl + 6 来切换.
     
     
    关于分屏的命令:
    :vsp filename : 左右分割,并打开一个新的文件
    :sp filename : 上下分割,并打开一个新的文件
    :only : 只保留当前窗口,并杀掉其他窗口
     
    ctrl+w c : 关闭当前窗口, 或者:q
    Ctrl+W q : 关闭当前窗口,如果只剩最后一个了,则退出Vim
    ctrl+w x : 将当前窗口和其他窗口调换位置
     
    Ctrl+W l : 光标向右移动
    Ctrl+W h : 光标向左移动
    Ctrl+W k : 光标向上移动
    Ctrl+W j : 光标向下移动
     
    Ctrl+W L : 将整个分割窗口向右移动
    Ctrl+W H : 将整个分割窗口向左移动
    Ctrl+W K : 将整个分割窗口向上移动
    Ctrl+W J : 将整个分割窗口向下移动
     
    Ctrl+W + 增加高度
    Ctrl+W - 减少高度
    ctrl+w = : 让左右上下各个分屏宽度,高度均等
     
     
    简单排版
    :ce(nter)    居中显示光标所在行
    :ri(ght)     右显示光标所在行
    :le(ft)      靠左显示光标所在行
    J            将光标所在下一行合并到光标所在行
    >>           光标所在行增加缩进(一个tab)
    <<           光标所在行减少缩进(一个tab)
    n>>          光标所在行开始的n行增加缩进
    n<<          光标所在行开始的n行减少缩进
     
     
    vim在insert mode 下的快捷键
    <c-w> delete a word in front of cursor
    <c-h> delete a char
    <c-u> delete all the words in front of cursor
    <c-t> insert a tab in the head of current line
    <c-i> insert a tab in front of cursor
    <c-r> call register
    <c-v> call register +
     
     
    <c-o> 一发入魂
    <c-[> <ESC>
    <c-c> <ESC>
     
     
    <c-p> 补全
    <c-x> 补全
    <c-n> 补全
    <c-a> insert 上次进入insert mode 输入的内容
    <c-s> :write
     
     
    <c-z> <ESC>ui
    <c-m> insert 一个 <CR>
    <c-j> insert 一个 <CR>
    <c-l> 我自己把它定义为将光标右移一个位置
    <c-b> 未定义,可用
    <c-f> 未定义,可用
    <c-,> unknown
    <c-.> unknown
    <c-q> unknown
    <c-e> unknown
    <c-y> unknown
    <c-d> unknown
    <c-g> unknown
    <c-k> unknown
    <c-;> unknown
  • 相关阅读:
    5. JVM虚拟机栈
    4. 程序计数器
    3. JVM运行时数据区
    2. 类加载
    1. JVM体系结构
    SpringCloud 网关组件Gateway
    SpringCloud Hystrix断路器的基本使用
    SpringCloud Ribbon和Feign 的使用和源码分析
    反向代理的概念
    事务mysql
  • 原文地址:https://www.cnblogs.com/alfayed/p/4649757.html
Copyright © 2011-2022 走看看