当按下:键时, 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;翻译:杨源, 车文隆;

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. 【小白的CFD之旅】20 计算区域的构建

    计算域是什么计算域如何创建常用的建模软件计算域几何的特殊之处具体的计算域提取方法小白总结 自从上次在食堂听了小牛师兄关于计算网格的一些问题后,小白决定在寒假期间好好的补习一下关于计算网格的划分内容.在 ...

  2. Java 的 I/O 类库的基本架构

    Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道.在当今这个数据大爆炸时代, ...

  3. SECURITY ONION:防御领域的kali

    https://securityonion.net/ Security Onion is a free and open source Linux distribution for intrusion ...

  4. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

  5. C++11 构造函数的改动

    一.继承构造函数 继承构造函数的引入原因:如果基类的构造函数很多,那么子类的构造函数想要实现同样多的构造接口,必须一一调用基类的构造函数,有点麻烦. 于是乎:C++11引入继承构造函数,子类可以通过使 ...

  6. 【Linux技术】linux之configure,pkg-config和PKG_CONFIG_PATH

    linux之configure,pkg-config和PKG_CONFIG_PATH 1.初衷 1)前面在装gtk时冒出来一个pkg-config,当时虽然不大清楚它是个什么东西,不过大致了解了下它的 ...

  7. mysql 常用指令集合

    show variables ——显示系统变量(扩展show variables like 'XXX') 在MYSQL的主从复制中 ,通过命令show  master status,可以查看maste ...

  8. My To Do List (Task Manager)

    My To Do List (Task Manager) With everything that business owners deal with throughout their day, th ...

  9. 2. 集成学习(Ensemble Learning)Bagging

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  10. 基于jquery横向手风琴效果

    基于jquery横向手风琴效果是一款基于jquery实现的左右滑动手风琴图片轮播切换特效.效果图如下: 在线预览   源码下载 效果图如下: <div class="flash&quo ...