global命令可以在指定模式下,匹配行上进行Ex命令 使用格式:

 :[range]g[lobal]/{pattern}/[cmd]

range-是执行范围(如果缺省,是%)

global-命令关键字

pattern-匹配内容

cmd-Ex命令操作(缺省是print)

这个命令还有两个反向命令

 global!

vglobal(v)

他们的意思是,在没有匹配pattern的行上,执行cmd操作

global这个命令使用的时候,包括两步,

第一步是获得已经拥有标记的pattern匹配内容,如果这个值是缺省值,那么会使用当前拥有标记的行

产生标记的行方式有搜索结果、×选中等

第二步才是执行cmd命令

下面我们进入简单演示 看下面这段内容

 my name is xiaoming

my name is xianghua

my year is 

my class is  

现在我们使用global删除所有包含name的行

方法1.:global/name/d

方法2.

)执行pattern标记行-/name

)执行global命令-global//d 

现在我们把这篇文章中的所有包含name字符串的行,放到寄存器a中

:global/name/y a 

原以为上面的操作可以完成我们的需求,不过,你使用

reg a

会发现,输出的结果是

:global/name/y a。

原来,使用global执行cmd是一条条执行的,当我们使用 小写的a调用寄存器的时候,是覆盖寄存器的内容,这时候我们使用A(追加)就可以了。

如下

:global/name/y A

如果我们想对下面的几行进行排序,我们怎么做?

aeeufs

rofwjejf

roqfjljfa

wpirgusjf

qw[pegj 

vim中排序命令是sort 所以,我们可以使用如下的方法

方法一:命令行选中上面的五行内容,然后用命令行:sort就行了

方法二:直接命令行:32,36 sort就行了

上面只对一处排序,很简单。假如现在有如下内容

 a<

rofwjejf

aeeufs

roqfjljfa
qw[pegj wpirgusjf /> a< aeeufs
roqfjljfa rofwjejf wpirgusjf />
 a<

rofwjejf

aeeufs

roqfjljfa
qw[pegj wpirgusjf /> a< aeeufs
roqfjljfa rofwjejf wpirgusjf />

我们可以使用如下命令

:g/</+,/\/>/- sort

它的意思就是,从 /</+1开始到/\/>/-1为止的匹配项中执行sort操作
它其实是

:[range]g[lobal]/{pattern}/[cmd]的扩展形式

:g/{star}/,/{end}/ cmd

这个感觉跟前种形式都是一致的,都是给cmd明确一个执行的范围。
:g 定位范围 命令

vim 基础学习之global的更多相关文章

  1. vim 基础学习之替换

    替换命令substitute可以用来查找跟替换操作. :[range]s[ubstitute]/{pattern}/{string}/[flags] [count] range-命令作用范围(缺省的情 ...

  2. vim 基础学习之查找

    普通模式下 /->正向查找 n-向下查找 N-向上查找 ?->反向查找 N-向下查找 n-向上查找 <C-r><C-w> <C-r>-引用,例如引用寄存 ...

  3. vim基础学习之搜索功能

    当我们使用vim看源码的时候,我们可能会碰到一个方法或者变量,我们想要知道这个变量在其他地方的使用情况.这时候我们经常的做法就是退出当前的文件,或者是重新切换一个终端,然后使用grep或者find等s ...

  4. vim基础学习之自动补全功能

    本章我们学习自动补全功能1.自动补全优先从当前的编辑区获得补全列表例如:我们写下如下内容 aaaaa aabbb aaab 当我们再次输入aa,然后我们按下Tab的时候,会弹出一个包含 aaaaa a ...

  5. vim基础学习1---简单命令

    1:vim abc:如果有abc文件,则打开,否则创建之后打开 2:输入"i",才可以输入东西 3:按Esc,它是底行模式,再敲":wq 回车" 保存退出. 4 ...

  6. vim 基础学习之文件跳转

    1. ''-当前文件上次跳转之前的位置2. '.-当前文件上次修改的位置,只要是发生了可能导致变化的命令操作就会被标记,哪怕实际结果没有变化3. '^-当前文件上次插入的位置,只要是发生了插入操作命令 ...

  7. vim基础学习之EX命令

    :tabnew -创建新标签 :split(sp)-垂直分割窗口 如果没有打开新的文件,那么会打开原来窗口的文件 :vsplit(vsp)-水平分割窗口 如果没有打开新的文件,那么会打开原来窗口的文件 ...

  8. vim 基础学习之可视模式

    1. 选择模式这个模式必须通过可视模式进入.在可视模式下,我们通过 <C-g>来把我们的可视选中块作为选择模式下的操作块. 这时候我们输入可见字符,就会把这个块给覆盖掉.例如aaa bbb ...

  9. vim 基础学习之插入模式

    插入模式1.字符编码,插入特殊字符 <C-v>{3位} 如,你想输入A,你可以在输入模式下<C-v>065(必须是3位) <C-v>u{4位} 如,你想输入¿,你可 ...

随机推荐

  1. python-logging写日志编码问题

    python-logging写日志编码问题 标签(空格分隔): python 修改logging.FileHandler() 指定编码格式为:utf8 重新运行

  2. POJ 2248 搜索

    剪枝: 1.从后向前枚举 2.迭代加深 然后就0msAC了 //By SiriusRen #include <cstdio> using namespace std; int n,T,s[ ...

  3. 《剑指offer》二维数组中的查找

    一.题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.输入描述 ar ...

  4. Bayes++ Library入门学习之熟悉namespace

    Bayes++是一个开源的C++类库.这些类表示并实现了用于离散系统的贝叶斯滤波的各种数值算法.该库中的类提供测试和一致的数值方法,并且用层次明确的结构表明了各种滤波算法和系统模型类型. 接下来,我们 ...

  5. HDU 5223 GCD

    题意:给出一列数a,给出m个区间,再给出每个区间的最小公倍数 还原这列数 因为数组中的每个数至少都为1,而且一定是这个区间的最小公约数ans[i]的倍数,求出它与ans[i]的最小公倍数,如果大于1e ...

  6. Zero-input latency scheduler: Scheduler Overhaul

    Scheduler Overhaul, with contributions from rbyers, sadrul, rjkroege, sievers, epenner, skyostil, br ...

  7. tensorflow 1 - 起步

    使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使用 tensor 表示数据. 通过 变量 (Variable) 维护状态. ...

  8. [CEOI2007]树的匹配Treasury(树形DP+高精)

    题意 给一棵树,你可以匹配有边相连的两个点,问你这棵树的最大匹配时多少,并且计算出有多少种最大匹配. N≤1000,其中40%的数据答案不超过 108 题解 显然的树形DP+高精. 这题是作为考试题考 ...

  9. 一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例

    最近,项目中遇到了数据库连接不够的问题. 异常信息com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data ...

  10. 题解 P3372 【【模板】线段树 1】(珂朵莉树解法)

    这道题可以用珂朵莉树做,但是由于数据比较不随机,而我也没有手写一颗平衡树,所以就被卡掉了,只拿了70分. 珂朵莉树是一种基于平衡树的(伪)高效数据结构. 它的核心操作是推平一段区间. 简而言之,就是把 ...