美文网首页
vim命令速记 & bash快捷键

vim命令速记 & bash快捷键

作者: ben99 | 来源:发表于2017-12-20 23:19 被阅读0次

    转载自 http://blog.csdn.net/nicky_zs/article/details/6941648

    h  向左移动光标

    j  向下移动光标

    k  向上移动光标

    l  向右移动光标

    以上四个是在一行之内移动光标的方法。可直接用于normal模式,也可用在其他命令后面,表示范围,比如dl是向右删除一个字符。还可以加上计数,d3l是向右删除三个字符。有时候,长度很长的一行会被折成多行显示,要在一行之内的上下折行内移动,则使用命令gj和gk。

    x  删除字符(等于dl)

    dd  删除一行(同样的命令重复两次表示对整行进行操作)

    u  撤销

    Ctrl+r 重做

    U  撤销当前一行的操作

    i  插入

    I  行首插入

    a  追加

    A  行末追加

    s  替换

    S  替换一行

    o  另起一行

    O  上面另起一行

    ZZ  退出并保存

    :q!  强制退出

    :e!  放弃所有修改重新载入文件

    :help 帮助

    :help x xxx的帮助

    w  向前移动一个word,光标停留在word首字符

    b  向后移动一个word,光标停留在word首字符

    e  向前移动一个word,光标停留在word尾字符

    ge  向后移动一个word,光标停留在word尾字符

    W  向前移动一个Word,光标停留在Word首字符

    B  向后移动一个Word,光标停留在Word首字符

    E  向前移动一个Word,光标停留在Word尾字符

    gE  向后移动一个Word,光标停留在Word尾字符

    $  将光标移动到当前行行尾

    ^  将光标移动到当前行行首的第一个非空白字符

    0  将光标移动到当前行行首,同Home键

    fx  在当前行上向右查找字符x

    Fx  在当前行上向左查找字符x

    tx  在当前行上向右查找字符x,并将光标停留在该字符的前一个字符上

    Tx  在当前行上向左查找字符x,并将光标停留在该字符的前一个字符上

    ;  重复命令

    ,  重复命令,但是方向相反

    %  跳转到当前光标的括号匹配的括号上,若当前光标不在括号上,则先找到下一个括号

    G  把光标移动到最后一行

    33G  把光标移动到第33行

    gg  把光标移动到第一行

    33gg 把光标移动到第33行

    50%  把光标移动到文件50%的地方

    H  把光标移动到当前屏幕的第一行

    M  把光标移动到当前屏幕的最中间一行

    L  把光标移动到当前屏幕的最后一行

    Ctrl+G 得到当前文件的行信息

    :set number 显示行号 nonumber不显示行号 ruler显示列号 noruler不显示列号

    Ctrl+U 使当前文本向上滚动半屏

    Ctrl+D 使当前文本向下滚动半屏

    Ctrl+Y 使当前文本向上滚动一行

    Ctrl+E 使当前文本向下滚动一行

    Ctrl+F 使当前文本向上滚动一屏

    Ctrl+B 使当前文本向下滚动一屏

    zz  把当前行放在屏幕正中央

    zt  把当前行放在屏幕顶端

    zb  把当前行放在屏幕底端

    /abc 在文本中向后查找abc

    ?abc 在文本中向前查找abc

    n  查找下一个

    N  查找上一个

    :set ignorecase查找时忽略大小写 noignorecase查找时不忽略大小写

    \<  标记word的开始

    \>  标记word的结束  /\只会查找到the而查找不到there

    *  向后查找光标所在的word,使用word标记

    #  向前查找光标所在的word,使用word标记

    g*  向后查找光标所在的word,不使用word标记

    g#  向前查找光标所在的word,不使用word标记

    :set hlsearch高亮显示结果 nohlsearch不高亮显示结果

    :nohl 去掉高亮显示

    :set incsearch边输入边搜索 nowrapscan文件结束时不要回到开头

    ^  匹配行首

    $  匹配行尾

    .  匹配任何字符

    \s  匹配空白字符

    +  匹配一个或多个

    \  转义

    ``  跳转到前一视图

    Ctrl+O 跳转到早些时候停置光标的位置

    Ctrl+I 跳回到后来停置光标的更新的位置

    ma  将当前光标下的位置标记为a(从a到z共26个位置可以用)

    `a  跳转到标记为a的位置

    'a  跳转到位置a所在行的行首

    dw  删除下一个词语

    d3w  删除下面3个词语

    cw  删除下一个词语并进入插入模式

    c3w  删除下面3个词语并进入插入模式

    cc  删除一整行并进入插入模式

    x  代表dl

    X  代表dh

    D  代表d$

    C  代表c$

    s  代表cl

    S  代表cc

    ra  将当前字符替换为a

    5ra  将当前5个字符都替换为a

    .  重复上一次所做出了改动的命令

    v  进入字符Visual模式

    V  进入行Visual模式

    Ctrl+V 进入列Visual模式

    o  在Visual模式下让光标到达被选中的内容的另一头

    O  在列Visual模式下让光标到达另一个对角线上的一头

    p  把用d或者x命令删除的内容粘贴到光标后面

    P  把用d或者x命令删除的内容粘贴到光标前面

    3p  放置3份副本

    xp  交换光标所在位置的字符和光标所在位置的后一个字符

    y  复制文本,随后也可以用p取出

    daw  删除光标所在的word

    cis  修改光标所在的sentence

    R  进入替换模式

    ~  改变光标所在字符的大小写,并将光标移动到下一个字符上

    :edit foo.txt在vim中开始编辑另一个文件

    :edit! foo.txt强制丢弃当前未保存的修改

    :next 转到下一个文件,可以缩写为:n

    :next! 强制丢弃未保存的修改并转到下一个文件

    :wnext 保存当前文件的修改并转到下一个文件

    :previous 转到上一个文件

    :wprevious 保存当前文件的修改并转到上一个文件

    :last 转到最后一个文件

    :first 转到第一个文件

    :2next 转到下面第二个文件

    :bn  转到下一个文件,若到最后一个文件,则转到第一个文件

    :bp  转到上一个文件,若到第一个文件,则转到最后一个文件

    :args 查看整个列表中有哪些文件

    :args a.txt b.txt c.txt重新定义一个文件列表

    :args *.txt打开所有txt文件

    Ctrl+^ 快速切换到上一个文件

    `"  移动光标到上一次离开该文件时光标所在的位置

    `.  移动光标到最后一次对文件做出修改的位置

    mA  设置当前位置为全局标记A(大写字母)

    `A  跳转到全局位置A,即使它不在当前文件内

    :set backup生成备份文件

    "fy  把选中的内容复制到寄存器f中

    "fp  把寄存器f中的内容粘贴出来

    "wdaw 把光标所在的word删除并放入寄存器w中

    :write >> logfile把当前文件写入(追加)到logfile中

    vim -R 只读打开

    vim -M 强制禁止修改打开

    :edit a.txt打开文件a.txt

    :saveas b.txt把当前缓冲区存入b.txt并同时打开b.txt进行编辑

    :file c.txt把当前文件的名字改为c.txt

    :split 分割一个窗口并在新窗口中打开同样的文件,可以缩写为:sp

    :split a.txt分割一个窗口并在新窗口中打开a.txt

    Ctrl+w w 跳转到另一个窗口

    Ctrl+w Ctrl+w 同上

    :close 关闭当前窗口

    :only 关闭其他窗口

    :new 分割一个新的空窗口

    :3split 分割出的窗口高度为3

    Ctrl+w + 增加当前窗口的高度

    Ctrl+w - 减小当前窗口的高度

    3Ctrl+w _ 设置当前窗口的高度为3

    Ctrl+w = 平分所有窗口

    Ctrl+w _ 最大化当前窗口

    :vsplit 垂直分割窗口,可以缩写为:vsp

    :vnew 垂直新建分割窗口

    Ctrl+w h 到左边的窗口

    Ctrl+w j 到下边的窗口

    Ctrl+w k 到上边的窗口

    Ctrl+w l 到右边的窗口

    Ctrl+w t 到顶端的窗口

    Ctrl+w b 到底端的窗口

    Ctrl+w H 向左移动窗口

    Ctrl+w J 向下移动窗口

    Ctrl+w K 向上移动窗口

    Ctrl+w L 向右移动窗口

    :qall 关闭所有窗口

    :wall 保存所有窗口的文件

    :wqall 保存并关闭所有窗口

    :qall! 强制关闭所有窗口

    vim -o a.txt b.txt c.txt为每一个文件打开一个水平分割窗口

    vim -O a.txt b.txt c.txt为每一个文件打开一个垂直分割窗口

    vimdiff a.txt b.txt打开a.txt和b.txt并进行比较(这个是shell中的命令)

    :vertical diffsplit a.txt打开分割窗口用于比较当前文件和a.txt

    :set scrollbind同步滚动 noscrollbind不同步滚动

    qa  将后续命令录制在寄存器a中(从a到z有26个可用)

    q  停止录制

    @a  执行寄存器a中录制的命令

    @@  执行刚刚执行过的寄存器中的命令

    qA  向寄存器a中追加命令

    "Ayy 将当前行追加复制到寄存器A中

    :[range]s+from+to+[flags] 把range范围内的from替换成to

    :[range]s=from=to=[flags] 把range范围内的from替换成to

    :[range]s/from/to/[flags] 把range范围内的from替换成to

    range为空时,只对当前行有效

    range为%时,对所有行都有效

    flags为空时,只替换指定行的第一个from

    flags有g时,替换指定行的所有from

    flags有c时,要求用户对每次替换进行确认

    flags有p时,要求:s命令列出所有改变的行

    flags有e时,要求:s命令在没有找到任何匹配时也不要报错

    :1,5s/from/to/g 把第1行到第5行中所有的from替换成to

    :3s/from/to/g 把第3行中所有的from替换成to

    :.write a.txt 把当前行写入a.txt

    :.,$s/from/to/g 把当前行到文件结束所有的from替换成to

    :?^Chapter?,/^Chapter/s/from/to/g 把上一个Chapter到下一个Chapter之间的所有from替换成to

    :.+3,$-5s/from/to/g 把当前+3行到倒数第5行的全部from替换成to

    :'a,'bs/from/to/g 把从a标记的行到b标记的行(包含a和b行)中全部from替换成to,注意是单引号不是倒引号

    :[range]g/{pattern}/{command} 在range范围内找到匹配pattern的行然后执行command命令

    这里的command必须是:开头的命令,而不能直接使用normal模式下的命令,除非使用|:normal|

    Ctrl+V 进入块选择/块编辑模式

    $  将块选择中的每一行都扩展至行尾

    h  停止上面的状态

    Ixxx  在被选中的块的前面插入xxx

    0Ixxx  在被选中的块的每一行的行首插入xxx

    Axxx  在被选中的块的后面追加xxx

    $Axxx 在被选中的块的每一行的行尾追加xxx

    cxxx  在被选中的块中删除被选中的块并以xxx替代

    Cxxx  在被选中的块中删除被选中的块一直到第一行行尾,并以xxx替代

    rx    把被选中的块中的所有字符都替换成x

    ~  交换大小写

    U  小写变大写

    u  大写变小写

    >  将被选中的块向右移动一个shift单位,空出来的地方填补空格

    <  同上,但是是向左移动,但是移动的单位同时受限于左边的边界

    J  将下一行附在当前行的末尾,本行的尾空格与下一行的头空格全都只用一个空格代替

    gJ  同上,但是不对原文本内容做任何改动

    :read a.txt将a.txt读入并放在当前行的下一行

    :$r  a.txt将a.txt读入并放在当前文件的最后

    :0r  a.txt将a.txt读入并放在当前文件的最开始

    :.,$w tmp将当前行到最后一行写入tmp文件中

    :.,$w! tmp将当前行到最后一行写入tmp文件中,即使tmp已存在

    :.write >>tmp将当前行追加到tmp文件

    gU  将字符变大写

    gUl  将当前字符变大写

    gUw  将当前字符至该word结束变大写

    gU$  将当前字符至行尾变大写

    gUgU 将当前整行变大写,可省略为gUU

    gu  将字符变小写

    gul  将当前字符变小写

    guw  将当前字符至该word结束变小写

    gu$  将当前字符至行尾变小写

    gugu 将当前整行变小写,可省略为guu

    g~  改变字符大小写

    g~l  改变当前字符大小写

    g~w  改变当前字符至该word结束大小写

    g~$  改变当前字符至行尾大小写

    g~g~ 改变整行字符大小写,可省略为g~~

    :[range]![shell command] 以range范围内的文本作为输入去执行command命令,并将结果覆盖写回range中

    或者用光标移动符代替:[range]

    :read ![shell command] 运行command并将输出写到当前行的下面

    :0r ![shell command]  同上,输出被写入文件开头

    :write ![shell command] 运行command并将整个文件写入到command的输入

    :.w ![shell command]  同上,只会将当前行输入给command

    Ctrl+L 重绘屏幕

    :%s/\/4/g 将文件中所有的单词four替换成4

    vim *.cpp

    qq:%s/\/GetAnswer/ge:wnq9999@q 将所有cpp文件打开并把所有的GetResp单词换成GetAnswer

    :%s/[,]∗,.∗/\2 \1/ 将文件中所有的First, Last形式替换成Last First形式

    g Ctrl+g 统计字数(要统计某一块具体的字数可以使用visual模式)

    K  查找man页

    :%s/\s\+$//  删除所有行末空白

    vim中的几个文本对象:aw 一个单词;  as 一个句子;  ap 一个段落

    zfap创建一个段落的折行

    zc关闭折行

    zo打开折行

    在Insert模式下:

    删除光标前的一个字符

    删除光标所在的一个字符

    Ctrl+W删除光标前的一个单词

    Ctrl+U删除光标前的一个行(按照输入顺序,不一定直接删到行首)

    Ctrl+p  补全单词

    Ctrl+n  补全单词(向前查找)

    Ctrl+x Ctrl+f补全文件名

    Ctrl+x Ctrl+l补全整行内容

    Ctrl+a补全上一次insert模式下插入的内容

    Ctrl+v插入一个由ascii码表示的符号,三位ascii码或者遇到第一个非数字时生效

    q:   显示命令历史

    试出来的bash快捷键:

    Ctrl + A:将光标移动到最左端

    Ctrl + B:将光标向左移动一个字符

    Ctrl + C:^C(向进程发送SIGINT信号)

    Ctrl + D:退出Shell

    Ctrl + H:向左删除一个字符

    Ctrl + I  :显示所有自动补全的候选项

    Ctrl + J:(貌似)回车

    Ctrl + L:在保留当前命令输入行的情况下清屏

    Ctrl + M:(貌似)回车

    Ctrl + O:(貌似)回车

    Ctrl + P:相当于向上的箭头,显示命令历史

    Ctrl + Q:解除锁屏

    Ctrl + R:在命令历史中查找

    Ctrl + S:锁屏

    Ctrl + T:交换最后输入的两个字符的位置

    Ctrl + U:清空当前输入的命令行

    Ctrl + V:^V(暂时不清楚是什么)

    Ctrl + W:向左删除一个单词

    Ctrl + XX:将光标在行首行尾来回移动

    Ctrl + Y:(貌似)粘贴了某些文本

    Ctrl + Z:输入命令时没用,进程在前台运行时将其放到后台并停止

    Shift + PageUp:向上滚屏

    Shift + PageDown:向下滚屏

    转:{

    跳转到函数、变量定义处:

    [+ctrl+i 跳转到函数、变量和#define

    ]+ctrl+i

    [+ctrl+d 跳转到#define处

    ctrl+i 向前跳到前几次光标位置

    ctrl+o 向后跳到后几次光标位置

    函数体跳转:

    总结是:

    1,相同就跳到函数的开头:(如果都是左括号或者都是右括号),不同就跳到函数的结尾:

    { 和 } 用来跳到函数的开头。

    [] 和 ][ 用来跳到函数的结尾。

    2,左右左右,“左”在前面。前后前后,“前”也在前面。因此左括号打头则表示向前,右括号打头则表示向后:

    [[ 和 [] 用来向前跳

    ]] 和 ][ 用来向后跳

    [[ 用来跳到光标前面的一个函数开始处。如果光标在函数体内的话,那就是所在函数的开始处。

    ][ 用来跳到光标后面的一个函数结尾处。如果光标在函数体内的话,那就是所在函数的结尾处。

    ]] 用来跳到光标后面的一个函数开始处。如果光标在函数体内的话,那就是下一个函数的开始处。

    [] 用来跳到光标前面的一个函数结尾处。如果光标在函数体内的话,那就是上一个函数的结尾处。

    {}

    如何选中括号中的内容 进行:

    将光标移至括号内,按shift+v进入行选模式,然后

    i{ - 选小括号中内容,不包括小括号

    a{ - 选小括号中内容,包括小括号

    ib - 选中括号中内容,不包括括号

    ab - 选中括号中内容,包括括号

    i{ - 选大括号中内容,不包括大括号

    a{ - 选大括号中内容,包括大括号

    :h text-objects

    下面还有些相关的tips,未全部验证:

    vi{ 选中{}中间的内容,不包括{}

    va{ 选中{}中间内容,包括{}

    vi( 选中()中间内容

    vi< 选中<>中间内容

    vi[ 选中[]中间内容

    vit 选中中间的内容

    vi” 选中”"中间内容

    vi’ 选中”中间的内容

    vis 选中一个句子

    vib 选中一个block

    viw选中一个单词

    vip 选中一个段落

    }

    相关文章

      网友评论

          本文标题:vim命令速记 & bash快捷键

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