vim快捷命令

vim的几种模式

  • 正常模式:可以使用快捷键命令,或按:输入命令行。
  • 插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
  • 可视模式:正常模式下按v可以进入可视模式,按V进入可视行模式,ctrl+v进入可视块模式。 在可视模式下,移动光标可以选择文本。
  • 替换模式:正常模式下按R进入。

vim键盘图

vi-vim-cheat-sheet-sch

vim窗口命令

窗口多开

同时打开多个文件,横向排列     
vim -o t.c t.h  或 vim t.c t.h  :all
同时打开多个文件,纵向排列     
vim t.c t.h :verticalall
同一文件横向分割窗口          
:split 或 :sp
同一文件纵向分割窗口          
:vsplit 或 :vsp

打开一个文件后,又想打开别的文件
横向打开一个的文件            
:sp 文件名
纵向打开一个的文件            
:vsplit 文件名 或 :vsp 文件名
横向打开一个新窗口            
:new 文件名
纵向打开一个新窗口            
:vnew 文件名

窗口关闭

关闭当前的窗口               
:close
只保留当前窗口               
:only

窗口移动与跳转

向下移动 ctrl+w j 
向上移动 ctrl+w k
向左移动 ctrl+w h
向右移动 ctrl+w l
移动到顶端 ctrl+w t
移动到底端 ctrl+w b
向右或向下方交换窗口  Ctrl+w r
向左或向上方交换窗口  Ctrl+w R
交换同列或同行的窗口的位置  Ctrl+w x
(vim默认交换当前窗口的与它下一个窗口的位置,如果下方没有窗口,则尝试与上一个窗口交换位置。亦可在此命令前加上数量,与指定的窗口交换位置。)

窗口内跳转命令

每次翻一整页:
向上翻整页 ctrl+f  meaning forward
向下翻整页 ctrl+b  meaning backward
每次翻半页:
向上翻半页 ctrl+u  meaning up
向下翻半页 ctrl+d  meaning down
每次翻一行:
向上翻一行 ctrl+y meaning yield
向下翻一行 ctrl+e meaning earser
光标定位快捷键:
将光标定位到屏幕顶部 zt
将光标定位到屏幕中间 zz
将光标定位到屏幕底部 zb

跳到文件的第一行:
1.键盘按下小写 gg
2.命令模式中输入 :0 或者 :1   回车

跳到文件最后一行:
1.键盘按下大写G
2.命令模式中输入$ 

移动光标至行首
1.需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首2.命令模式中使用快捷键"^"(即Shift+6)或0(数字0)

移动光标至行尾
1.快速移动光标至当前行的行尾,可以使用编辑键End
2.命令模式中使用快捷键"$"(Shift+4)快捷键"$"前还可以加上数字表示移动的行数。例如使用"1$"表示当前行的行尾,"2$"表示当前行的下一行的行尾

文本替换命令

1.替换当前行中的内容
:s/from/to/     将当前行中的第一个from,替换成to。如果当前行含有多个from,则只会替换其中的第一个。
:s/from/to/g    将当前行中的所有from都替换成to。
:s/from/to/gc   将当前行中的所有from都替换成to,但是每一次替换之前都会询问请求用户确认此操作。
注意:这里的from和to都可以是任何字符串,其中from还可以是正则表达式。

2.替换某一行的内容
:.s/from/to/g   在当前行进行替换操作。
:33s/from/to/g  在第33行进行替换操作。
:$s/from/to/g   在最后一行进行替换操作。

3.替换某些行的内容
:10,20s/from/to/g   对第10行到第20行的内容进行替换。
:1,$s/from/to/g     对第一行到最后一行的内容进行替换(即全部文本)。
:1,.s/from/to/g     对第一行到当前行的内容进行替换。
:.,$s/from/to/g     对当前行到最后一行的内容进行替换。
:'a,'bs/from/to/g   对标记a和b之间的行(含a和b所在的行)进行替换。其中a和b是之前用m命令所做的标记。

4.替换所有行的内容
:%s/from/to/g   对所有行的内容进行替换。

5.替换命令的完整形式    :[range]s/from/to/[flags]
5.1 s/from/to/
    把from指定的字符串替换成to指定的字符串,from可以是正则表达式。
5.2 [range]
    有以下一些表示方法:
    不写range   :  默认为光标所在的行。
    .           :  光标所在的行。
    1           :  第一行。
    $           :  最后一行。
    11          :  第11行。
    'a          :  标记a所在的行(之前要使用ma做过标记)。
    .+1         :  当前光标所在行的下面一行。
    $-1         :  倒数第二行。
    22,33       :  第22~33行。
    1,$         :  第1行 到 最后一行。
    1,.         :  第1行 到 当前行。
    .,$         :  当前行 到 最后一行。
    'a,'b       :  标记a所在的行 到 标记b所在的行。
    %           :  所有行(与 1,$ 等价)。
    ?chapter?   :  从当前位置向上搜索,找到的第一个chapter所在的行。
    /chapter/   :  从当前位置向下搜索,找到的第一个chapter所在的行。
    注意:所有range的表示方法都可以通过 +、- 操作来设置相对偏移量。chapter可以是任何字符串或者正则表达式。
5.3 [flags]
    这里可用的flags有:
    无      :  只对指定范围内的第一个匹配项进行替换。
    g       :  对指定范围内的所有匹配项进行替换。
    c       :  在替换前请求用户确认。
    e       :  忽略执行过程中的错误。
    注意:上面的所有flags都可以组合起来使用,比如gc表示对指定范围内的所有匹配项进行替换,并且在每一次替换之前都会请用户确认。

发表评论

电子邮件地址不会被公开。 必填项已用*标注