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
  • 相关阅读:
    深入Android 【一】 —— 序及开篇
    Android中ContentProvider和ContentResolver使用入门
    深入Android 【六】 —— 界面构造
    The service cannot be activated because it does not support ASP.NET compatibility. ASP.NET compatibility is enabled for this application. Turn off ASP.NET compatibility mode in the web.config or add the AspNetCompatibilityRequirements attribute to the ser
    Dynamic Business代码片段总结
    对文件的BuildAction以content,resource两种方式的读取
    paraview 3.12.0 windows下编译成功 小记
    百度网盘PanDownload使用Aria2满速下载
    netdata的安装与使用
    用PS给证件照排版教程
  • 原文地址:https://www.cnblogs.com/qyddbear/p/2975643.html
Copyright © 2011-2022 走看看