
vim常用命令(不断补充中)
删除命令
- 删除当前行:dd
- 删除当前以上行:dgg
- 删除当前以下行:dGG
文本替换
转载自:vim文本替换命令 - 折翼的飞鸟 - 博客园
http://www.cnblogs.com/wind-wang/p/5768000.html
1. 字符串替换
1.1 替换当前行中的内容:`:s/from/to/`
s是switch的意思,即替换
- `:s/from/to/`:将当前行中的第一个from,替换成to。如果当前行含有多个 from,则只会替换其中的第一个。
- `:s/from/to/g`:将当前行中的所有from都替换成to。
- `:s/from/to/gc`: 将当前行中的所有from都替换成to,但是每一次替换之前都会询问请求用户确认此操作。
注意:这里的from和to都可以是任何字符串,其中from还可以是正则表达式。
1.2 替换某一行的内容: `:33s/from/to/g`
- `:.s/from/to/g`:在当前行进行替换操作。
- `:33s/from/to/g`:在第33行进行替换操作。
- `:$s/from/to/g`:在最后一行进行替换操作。
1.3 替换某些行的内容: `:10,20s/from/to/g`
- `:10,20s/from/to/g`:对第10行到第20行的内容进行替换。
- `:1,$s/from/to/g`:对第一行到最后一行的内容进行替换(即全部文本)。
- `:1,.s/from/to/g`:对第一行到当前行的内容进行替换。
- `:.,$s/from/to/g`:对当前行到最后一行的内容进行替换。
- `:'a,'bs/from/to/g`:对标记a和b之间的行(含a和b所在的行)进行替换。其中a和b是之前用m命令所做的标记。
1.4 替换所有行的内容: `:%s/from/to/g`
- `:%s/from/to/g`:对所有行的内容进行替换。
- `:g/^\s*$/d`:删除空行,其中g为全区命令,/为分隔符,^\s*$用来匹配空行,其中^表示行首,\s表示空字符,包括空格和制表符,*重复0到n个前面的字符,$表示行尾。连起来就是匹配只有空字符的行,也就是空行。/d表示删除该行。
1.5 替换命令的完整形式: `:[range]s/from/to/[flags]`
1.5.1 `s/from/to/`
把from指定的字符串替换成to指定的字符串,from可以是正则表达式。
1.5.2 `[range]`
有以下一些表示方法:不写range : 默认为光标所在的行。
- . : 光标所在的行。
- 1 : 第一行。
- $ : 最后一行。
- 33 : 第33行。
- 'a : 标记a所在的行(之前要使用ma做过标记)。
- .+1 : 当前光标所在行的下面一行。
- $-1 : 倒数第二行。(这里说明我们可以对某一行加减某个数值来取得相对的行)。
- 22,33 : 第22~33行。
- 1,$ : 第1行 到 最后一行。
- 1,. : 第1行 到 当前行。
- .,$ : 当前行 到 最后一行。
- 'a,'b : 标记a所在的行 到 标记b所在的行。
- % : 所有行(与 1,$ 等价)。
- ?chapter? : 从当前位置向上搜索,找到的第一个chapter所在的行。(其中chapter可以是任何字符串或者正则表达式)。
- /chapter/ : 从当前位置向下搜索,找到的第一个chapter所在的行。(其中chapter可以是任何字符串或者正则表达式)。
注意,上面的所有用于range的表示方法都可以通过 +、- 操作来设置相对偏移量。
1.5.3 `[flags]`
这里可用的flags有:
- 无:只对指定范围内的第一个匹配项进行替换。
- g:对指定范围内的所有匹配项进行替换。
- c:在替换前请求用户确认。
- e:忽略执行过程中的错误。
注意:上面的所有flags都可以组合起来使用,比如 gc 表示对指定范围内的所有匹配项进行替换,并且在每一次替换之前都会请用户确认。
2. 统计字符串出现次数
多按几次ESC键,进入普通模式。输入:(英文半角的冒号)进入命令模式。假设要统计的字符为”test”,再输入%s/test/&/gn后回车。此时就能看到屏幕下方显示的数字。