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

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

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

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

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

用行号作为地址:

  1. :3p

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

  1. :3,6p

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

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

  1. :'<,'>

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

用模式指定范围:

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

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

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

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

最后,总结:

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

使用:t 命令进行复制:

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

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

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

如:

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

使用:m 命令进行移动:

用法与:t 的作法相同;

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

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

如:

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

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

  1. # 如:在每一行之前插入 // ,可以写作:
  2. :3,10normal I//
  3. #也可以写作:
  4. :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命令;

如:

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

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

用exit 退出;

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

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

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

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

批量运行EX命令:

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

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

了解更多,见 :h source

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

VIM命令行模式下的相关知识的更多相关文章

  1. 如何在命令行模式下查看Python帮助文档---dir、help、__doc__

    如何在命令行模式下查看Python帮助文档---dir.help.__doc__ 1.dir函数式可以查看对象的属性,使用方法很简单,举str类型为例,在Python命令窗口输入 dir(str) 即 ...

  2. Linux在终端命令行模式下智能补全功能以及组合键

    linux命令行下也有很多热键(快捷键).先来看看tab键 1.如果想看看linux下以c开头的命令可直接在命令行下敲入c然后连续敲两次tab,再选择y,会显示所有以c开头的命令. 2.涉及到文件时, ...

  3. mysq在命令行模式下执行shell命令

    mysql可以在命令行模式下执行shell命令 mysql> help For information about MySQL products and services, visit: htt ...

  4. php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致

    php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致 命令行下查看加载的php.ini的路径: php -i|grep php.ini web模式下查看: <? ...

  5. mplayer命令行模式下的使用方法【转】

    mplayer命令行模式下的使用方法http://hi.baidu.com/lovehack2006/blog/item/162ef9778214111eb051b9d4.htmlMPlayerMPl ...

  6. 在命令行模式下查看Python帮助文档---dir、help、__doc__

    在命令行模式下查看Python帮助文档---dir.help.__doc__   1.dir函数式可以查看对象的属性,使用方法很简单,举str类型为例,在Python命令窗口输入 dir(str) 即 ...

  7. Linux命令行模式下安装VMware Tools详细步骤

    在Linux命令行模式安装VMware Tools 方法/步骤1: 首先启动CentOS 7,在VMware中点击上方"VM",点击"Install VMware Too ...

  8. 命令行模式下 MYSQL导入导出.sql文件的方法

    一.MYSQL的命令行模式的设置:桌面->我的电脑->属性->环境变量->新建->PATH=“:path\mysql\bin;”其中path为MYSQL的安装路径.二.简 ...

  9. windows命令行模式下无法打开python程序解决方法

    今天刚开始学Python,首先编写一个简单地hello world程序,想在命令行模式运行,结果出现下面: 经过一番思考,发现用cd命令可以解决这件事,看下图: 这样就解决了.

随机推荐

  1. FFmpeg(9)-解码器解码代码演示(FFmpeg调用MediaCodec实现硬解码、多线程解码、及音视频解码性能测试)

    一.AVFrame 用来存放解码后的数据. [相关函数] AVFrame *frame = av_frame_alloc();                       // 空间分配,分配一个空间 ...

  2. c++11新增的一些便利的算法

    c++11新增加了一些便利的算法,这些新增的算法使我们的代码写起来更简洁方便,这里仅仅列举一些常用的新增算法,算是做个总结,更多的新增算法读者可以参考http://en.cppreference.co ...

  3. 每日英语:China Destroys Six Tons of Confiscated Ivory

    BEIJING—Chinese government officials destroyed more than six tons of ivory that had been illegally s ...

  4. 每日英语:The Benefits of a Better Men's T-Shirt

    "I WEAR A T-shirt and jeans every single day," said Erik Schnakenberg, 30, co-founder of t ...

  5. 李洪强iOS经典面试题

    李洪强iOS经典面试题 1. struct和class的区别 swift中,class是引用类型,struct是值类型.值类型在传递和赋值时将进行复制,而引用类型则只会使用引用对象的一个"指 ...

  6. Vue项目页面跳转时候的,浏览器窗口上方的进度条显示

    1.安装: cnpm install --save nprogress 2.在main.js中引入: import NProgress from 'nprogress' import 'nprogre ...

  7. Eclipse报This version of the rendering library is more recent than your version of ADT ...

    http://blog.csdn.net/zhao_3546/article/details/12968295 最近使用 Help --> Check for Updates 升级了Eclips ...

  8. make -C M=

    http://blog.sina.com.cn/s/blog_89fa41ef0100trjr.html Makefile:PWD = $(shell pwd)KERNEL_SRC = /usr/sr ...

  9. WPF 异步执行

    private void Operate_OnClick(object sender, RoutedEventArgs e) { AsyncFindBox(); RadWindow.Alert(&qu ...

  10. Linux 下MongoDb的安装

    MongoDb在linux可以说是非常的简单的. 先下载: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tg ...