zoukankan      html  css  js  c++  java
  • VIM命令行模式下的相关知识

    当按下:键时, Vim会切换到命令行模式;

    重复上次执行的EX命令,只需按@:就可以;

    在一行或多个连续行执行命令

    很多的EX全天候可以指定操作范围,如行号,位置标记等;

    以:print命令作为演示,下面:

    用行号作为地址:

    :3p

    用行号指定一个范围,形式为:    :{start},{end}

    :3,6p

    也可以用高亮选区指定范围:

    当我们选中选区以后,按 : 后,会出现下面的符号:

    :'<,'>

    其实,符号 ‘< 表示高亮选区首行的位置标记,而 ‘> 代表高亮选区的最后一行的标记; 注意: 这些标记在退出了可视模式后也是仍然存在的;

    用模式指定范围:

    :/开始的内容/,/结尾的内容/p

    这样,就标记了之间的内容了,也包括了两个开头结尾;

    另个可以在上面的基础上用位置偏移对范围进行修正:

    即:{address}+n,  其中 n 可以为1,2,3等;

    最后,总结:

    1               文件的第一行; 
    $               文件的最后一行; 
    0               虚拟行,位于文件第一行上方; 
    .               光标所在行; 
    'm              包含位置M的行; 
    '<              高亮区的起始行; 
    '>              高亮区的结束行; 
    %               整个文件(相当于:1,$的简写模式);

    使用:t 命令进行复制:

    :copy命令的简写形式为:t, 也可以简写为co;

    :move命令的简写形式为:m

    它的格式为: [range]copy{address} ,      表示:为把指定范围内的内容复制到指定的address的下方;   当range 表示当前行时,可以省略 . 

    如:

    :6t.            把第六行提制到当前行的下方; 
    :t6             把当前行复制到第6行的下方; 
    :t.             为当前行复制一个副本; 
    :t$             把当前行提制到文本的结尾; 
    :'<,'>t0        把高亮区复制到文件开头;

    使用:m 命令进行移动:

    用法与:t 的作法相同;

    使用:normal 命令在指定范围内执行普通模式下的命令:

    它的格式为:       [range]normal 普通模式下的命令

    如:

    # 在指定范围内的每一行后面加上"love you"
    :3,10normal Alove you

    注意:在执行指定的普通模式之前,Vim会把光标移到该行的行首,所以呢,光标的位置总是固定的, 不用担心;

    #  如:在每一行之前插入 //       ,可以写作:
    :3,10normal I//
    #也可以写作:
    :3,10normal i//

    自动补全EX命令:

    当输入部分EX命令时,我们按Tab键,它们自己补全命令,依次按Tab,会依次填充补全项,按shift-Tab 返回遍历;

    如:当补全的候选项为  abc, ade, aeq时, 当输入了a时,我们按Tab键,全补全abc,再次按Tab键,会补全ade,如果按shift-Tab键,会返回补全abc。

    ctrl-d 键,会列出所以可用的选项;

    把当前的单词或字符串插入命令行:

    ctrl-r + ctrl-w, 可以把光标下的单词插入到命令行;

    ctrl-r + ctrl-a, 可以把光标下的字符串插入到命令行;

    回顾命令历史:

    VIm会记录 EX 命令的历史 ,它也会记录查找命令的历史;

    当我们输入 : 或 / 以后,按up或down键(上下键),就可以翻看到历史的输入;

    另我们输入了一小部分以后,按up或down键(上下键),就可以翻以 输入的这一小部分开头的 历史的输入;意思就是它可以进行命令过滤;

    输入 q: 进入命令行窗口;可以看到所以的历史记录了;

    在输入命令的过程中,也可以通过 ctrl-f 来进入命令历史窗口;

    输入q/  : 打开了查找命令历史的命令行窗口;

    执行Shell中的命令:

    方法1:  :!{cmd}           它可以运行单条的shell命令;

    如:

    #在vim中的命令行中,%代表了当前文件名(当表示范围时,表示全部内容)
    :!./%                      #运行当前文件;
    :!pwd                    #打印当前路经;

    方法2: :shell         启动一个交互的shell会话;   

                                用exit 退出;

    方法3: 我们可以在vim 中 用 ctrl-z把进程挂起,然后用fg键 唤醒;(这不是vim 具有的,而是系统)

    把缓冲区内容作为标准输入与输出:

    :read !{cmd}                在shell中执行{cmd},并把其输出插入到光标下方; 
    :[range]write !{cmd}        在shell中执行{cmd},并以[range]作为输入; 
    :[range]!{filter}           使用外部程序{filter}过滤指定的[range];

    其中,read 与write 都可以写为 r 和w。

    批量运行EX命令:

    我们可以把EX命令写到一个脚本里面,然后批量加载运行它们;

    方法:假如写在了 batch.vim中, 然后呢,用:source来执行这个脚本;

    了解更多,见 :h source

    参考:VIM实用技巧,第二版,作者:Drew Neil;翻译:杨源, 车文隆;

  • 相关阅读:
    直方图内最大矩阵
    P1578 奶牛浴场
    P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…
    P1566 加等式
    P1564 膜拜
    P1541 乌龟棋
    P1537 弹珠
    Response.AddHeader使用实例
    LSPCI具体解释分析
    介绍一款开源的类Excel电子表格软件
  • 原文地址:https://www.cnblogs.com/yinheyi/p/6950051.html
Copyright © 2011-2022 走看看