zoukankan      html  css  js  c++  java
  • vim常用命令

    自己也用vim很多年了,今天有空总结了下平常经常使用的命令,共享之。

    1. 打开保存文件

    :e <filename>               打开文件

    :saveas <filename>       另存为

    :ZZ                              等于:wq 保存退出

    :bn                              切换到下一个打开的文件

    :bp                              切换到上一个打开的文件

    :!                               执行shell命令

    2. 进入输入模式

    i                                  从光标当前位置开始输入文件。

    a                                 从目前光标所在位置的下一个位置开始输入文字

    I                                  行首插入。

    A                                 行尾插入。

    o                                 插入新的一行,从行首开始输入文字。

    O                                在光标所在的行的上面插入一行。

    s                                 删除光标后的一个字符,然后进入插入模式。

    3. 移动光标

    h                                 向左

    space                           向右(我觉得比l方便)

    k                                  向上

    J                                   向下

    0                                  到行首

    ^                                  到本行第一个非空字符

    $                                   到行尾

    g_                                 到本行最后一个非空字符

    w                                   跳到下个字的开头,W忽略符号

    e                                   光标跳到下个字的字尾, E忽略符号

    b                                   光标回到上个字的开头,B忽略符号

    f+x                                向前跳到第一个x字符处,F向后

    t+x                                跳到x的前一个字符,T向后跳到x的后一个字符

    *|#                                搜索单词,*向下,#向上,配合大小n使用

    gd                                  光标移到变量定义处

    ctrl + n                           根据已有单词自动补齐

    zz                                  让光标所在行居于屏幕中央,写到最底部时有用

    zt                                   让光标所在行居于屏幕最顶部

    zb                                  让光标所在行居于屏幕底部

    %                                   移动到闭括号

    [{            移动到匹配的{

    4. 删除文本

    dw                               删除光标到word结尾

    cw                               删除光标到word结尾并进入insert模式

    daw                             删除光标所在的整个word

    caw                             删除光标的word并进入insert模式

    d$                               删除至行尾

    d0                               删除至行首

    dG              删除至最后一行

    : num1, num2 d             删除num1到num2之间的所有行

    : 1,.d                           删除第一行到当前行

    c$                                删除至行尾并进入insert模式,等于C

    c0                                删除至行首并进入insert模式

    dd                                删除整行

    ddp                              上下两行调换

    dt+x                             删除所有字符直到遇到x

    cc                                 删除整行并进入insert模式

    shift+j                           删除行尾的换行符,下一行接上来了

    dib                                删除()内文本

    dab                               删除()内文本,包括()

    diB                                删除{ }内文本

    daB                               删除{ }内文本,包括{ }

    5. 复制文本

    yw                               复制光标到word结尾

    yaw                              复制整个word

    nyw                              复制光标至第n个word结尾

    y$                                复制至行尾

    y0                                复制至行首

    yG                                复制至最后一行

    : num1, num2 y             复制num1到num2之间的所有行

    :1,.y                             复制第一行到当前行

    :num1,num2  co num3   复制行num1到num2到行num3,适用于复制多行

    :num1, num2  m num3   剪切行num1到num2到行num3,适用于剪切多行

    yib                                复制()内文本

    yab                               复制()内文本,包括()

    yiB                                复制{ }内文本

    yaB                              复制{ }内文本,包括{ }

    p                                  复制到当前字符后

    P                                  复制到当前字符前

    6. 替换文本

    r                                  替换光标所在处的字符。

    R                                 替换光标所到处的字符,直到按下“ESC”键为止,非常实用!

    :s/string1/string2/g      将string1替换为string2, 限于本行

    :%s/string1/string2/g             全文替换,%表示所有行,s为substitute,g为global(替换范围内每行所有string1),没有g只会替换每行的第一个string1

    :num1,num2 s/string1/string2/g   行num1至num2范围内替换

    :1,500 /^/#/g               在前500行行首插入#

    :1,500 /$/#/g               在前500行行尾插入# 

    ~                                 切换大小写,当前字符

    7. 可视模式

    V                                  进入可视行模式,

    v                                  进入可视字符模式

    >                                  选中的块右移

    <                                  块左移

    =                                  块自动对齐

    使用V选择多行,>,<和=可以多行对齐,实用功能!

    ctrl + v                         列模式,可以选中块

    在所有被选择行前加注释:

    ctrl + v进入列模式, 选中注释行,I到第一行行首输入//, 按两次esc即可

    删除注释:

    ctrl+v 选中注释,d

    在所有被选中行后加文本:

    ctrl + v进入列模式, 选中注释行,$到行尾,A到第一行行尾输入文本, 按两次esc即可

    vib                               选中()内文本

    vab                             选中()内文本,包括()

    viB                              选中{ }内文本

    vaB                             选中{ }内文本,包括{ }

    8. 区域选择

    <action>a<object> 或<action>i<object>

    action                    通常是 d (删除), y (拷贝), v (可视模式选择)。

    object                   通常可以是字符 "   '    )    }    ]等,用于选择 “ ”   ‘ ’   ( )    [ ]     { }中的文本

    i只选择符号内部字符,a包含符号

    di)                         等于dib

    daB                       等于da}

    >>                        本行右缩进

    <<                        本行左缩进

    ==                        本行自动缩进当前行

    9. 命令

    :set hlsearch            高亮显示查找到的单词

    :set nohlsearch        关闭改功能

    :set nu                   显示行号

    :set nonu               关闭显示行号  


    作者:coderkian
    出处:http://www.cnblogs.com/coderkian/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    工厂设计模式
    二分查找(java实现)
    集合
    JS中,根据div数值判断弹出窗口
    用JS,打印正立三角形
    用JS,打印99乘法表
    用JS,求斐波那契数列第n项的值
    用JS 循环做一个表格
    JS中,如何判断一个被转换的数是否是NaN
    用JS写一个简单的程序,算出100中7的倍数的最大值
  • 原文地址:https://www.cnblogs.com/coderkian/p/3446460.html
Copyright © 2011-2022 走看看