zoukankan      html  css  js  c++  java
  • Vim的常用命令笔记

    【简介】

    Vim是vi编辑器的改进版。vi是类UNIX系统里最常用的编辑器。

    【模式】

    在shell中直接打vim filename就会进入普通模式。按i键进入编辑模式,此时Vim底部显示INSERT表示可以编辑内容了。按Esc键退出编辑模式,按:切换到命令模式。

    【常用命令】

    进入vi

    vi filename   打开或新建文件,并将光标置于第一行首

    vi +n filename  打开文件,并将光标置于第n行首

    vi + filename  打开文件,并将光标置于最后一行首

    vi +/pattern filename  打开文件,并将光标置于第一个与pattern匹配的串处

    vi filename....filename  打开多个文件,依次进行编辑

    vi -r filename  在上次正用vi编辑时发生系统崩溃,恢复filename

    从光标开始处向文件尾搜索。比如搜user  按Esc再按/user

    从光标开始处向文件首搜索。  ?user

    在同一方向重复上一次搜索命令  n

    在反方向重复上一次搜索命令  N

    查看某行  :行号

    撤销上次操作  u

    代码自动补全  Ctrl+n

    删除当前字符  x或DEL键  (删除内容保存在缓冲区。x删除光标后的,X删除光标前的)

    删除当前行  dd  (删除内容保存在缓冲区)

    删除当前光标至行尾的所有内容  d$

    删除从当前行至文件末尾的所有行  dG

    删除至当前行首  d0

    左右字符互换  xp

    上下两行内容互换  ddp

    把当前行复制到缓冲区  y

    把缓冲区中的文本插入到当前位置  p

    把当前行复制到a缓冲区(可用26个字母命名多个缓冲区)  ay

    把a缓冲区中的文本插入当前位置  ap

    上下两行合并成一行  J

    重复执行上次执行的命令  .

    复制粘贴一整行。假如光标在行首,要复制一行,先按Esc到命令模式,再按yy,再按p,就在该行下面复制粘贴了一整行。或者V选择拷贝内容(一行高亮),Y拷贝,P粘贴到新地方。

    复制粘贴某一区间。光标移动到想要复制的字符下,按Esc,按v进入visual模式(可用高亮的色块选择内容),按左右键移动到想要复制的字段末尾,按y复制,光标移动到想要粘贴的地方,按p粘贴。

    对比2个文件  vimdiff file1 file2

    移动光标类命令

    h  j  k  l

    左  下  上  右

    nk  向上移动n行 

    nj  向下移动n行 

    nh  向左移动n列 

    nl  向右移动n列 

    $  光标移动到当前行行尾

    G  光标移动到文档最后一行开头

    H  光标移动到当前屏幕首行开头

    L  光标移动到当前屏幕末行开头

    M  光标移动到当前屏幕中间行开头

    {  光标上移一个段落

    }  光标下移一个段落

    (  光标移动到句首

    )  光标移动到句尾

    w或W   光标右移一个字至字首

    b或B   光标左移一个字至字首

    e或E   光标右移一个字至字尾

    nG  光标移至第n行首

    n+  光标下移n行

    n-  光标上移n行

    n$  光标移至第n行尾

    0  (注意是数字零)光标移至当前行首 
     

    插入文本类命令

    i  在光标前

    I  在当前行首

    a  光标后

    A  在当前行尾

    o  在当前行之下新开一行

    O  在当前行之上新开一行

    r  替换当前字符

    R  替换当前字符及其后的字符,直至按ESC键

    s  从当前光标位置处开始,以输入的文本替代指定数目的字符

    S  删除指定数目的行,并以所输入文本代替之

    ncw或nCW  修改指定数目的字

    nCC  修改指定数目的行

    命令模式下

    :q!  不保存退出vim

    :w  保存文档,不退出vim

    :x  保存并退出

    :! command  运行shell命令

    :r! command  将命令cmmand的输出结果放到当前行

    :e filename  编辑/打开一个文件

    :s/one/two  在当前行中把第一个one替换成two

    :s/one/two/g  把当前行中所有的one替换成two

    :%s/one/two/g  在全局范围内把one替换成two

    :n1,n2s/one/two/g  将第n1行至n2行中所有的one替换成two

    :tabe  新建一个标签页

    :close  关闭当前标签页

    :tabp  切换到上一个标签页

    :tabn  切换到下一个标签页

    :qa  关闭所有标签页并退出

    :set number  列出行号  

    :reg  列出缓冲区内容

    :set all  列出所有参数的配置情况 

    :set ignorance  设置在搜索中忽略大小写 

    :set nowrapscan  禁止vi在搜索到达文件两端时,又从另一端开始

    :set warn  在转到别的文件时若没保存当前文件则显示NO write信息 

    :n1,n2 d   将n1到n2行之间的内容删除  

    :n1,n2 co n3  将n1行到n2行之间的内容拷贝到第n3行下

    :n1,n2 m n3  将n1行到n2行之间的内容移至到第n3行下

    屏幕翻滚类命令

    Ctrl+u  向文件首翻半屏

    Ctrl+d  向文件尾翻半屏

    Ctrl+f  向文件尾翻一屏

    Ctrl+b  向文件首翻一屏

    nz  将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部

    【vimrc配置】

    在命令模式下用set命令设置的东西是不能保存的,下次打开vim时又要重新设置。所以vim提供了一个配置文件叫vimrc,可以保存自定义的配置信息。该文件在Debian系统中位于/etc/vim/目录下。在该文件中,以双引号开头的是注释。

    set autoindent

    自动缩排,如当前行是从第3个字符的位置开始编辑的,按回车后光标会自动定位在下一行第三3个字符的位置。

    set paste

    置粘贴模式,这样粘贴过来的程序代码就不会错位了。

    打开文件时自动回到上次编辑位置。

    if has("autocmd")
       autocmd BufRead *.txt set tw=78
       autocmd BufReadPost *
           if line("'"") > 0 && line ("'"") <= line("$") |
             exe "normal g'"" |
           endif
    endif
  • 相关阅读:
    Allegro绘制PCB流程
    KSImageNamed-Xcode
    UIApplicationsharedApplication的常用使用方法
    javascript中间AJAX
    hdu1845 Jimmy’s Assignment --- 完整匹配
    嵌入式控制系统和计算机系统
    Bean行为破坏之前,
    jsonkit 分解nsarray 时刻 一个错误
    IO 字符流学习
    2013级别C++文章9周(春天的)工程——运算符重载(两)
  • 原文地址:https://www.cnblogs.com/qyddbear/p/2975643.html
Copyright © 2011-2022 走看看