首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vim中的正则表达式

在Vim中,正则表达式是一种强大的文本搜索和替换工具。它可以帮助你在文本中快速找到符合特定模式的文本,并进行替换。以下是Vim中正则表达式的一些基本用法:

  1. 搜索:

在Vim中进行正则表达式搜索,可以使用以下命令:

代码语言:txt
复制
/pattern

其中,pattern是你要搜索的正则表达式模式。例如,如果你想搜索所有以“foo”开头的单词,可以使用以下命令:

代码语言:txt
复制
/\<foo\w*
  1. 替换:

在Vim中进行正则表达式替换,可以使用以下命令:

代码语言:txt
复制
:%s/pattern/replacement/g

其中,pattern是你要替换的正则表达式模式,replacement是你要替换成的文本,g表示全局替换。例如,如果你想将所有以“foo”开头的单词替换为“bar”,可以使用以下命令:

代码语言:txt
复制
:%s/\<foo\w*/bar/g
  1. 分组:

在正则表达式中,可以使用括号()来对一段文本进行分组。这样,你可以在替换时使用\1\2等变量来引用分组中的文本。例如,如果你想将所有以“foo”开头的单词替换为“bar”,并保留原单词中的“o”字母,可以使用以下命令:

代码语言:txt
复制
:%s/\(f\)\(oo\)/\1\2\1\2/g
  1. 其他常用正则表达式元字符:
  • .:匹配任意单个字符。
  • *:匹配前面的字符0次或多次。
  • \{n,m\}:匹配前面的字符至少n次,最多m次。
  • \{n,\}:匹配前面的字符至少n次。
  • \{,m\}:匹配前面的字符最多m次。
  • \{n\}:匹配前面的字符恰好n次。
  • \?:匹配前面的字符0次或1次。
  • \+:匹配前面的字符1次或多次。
  • \=:匹配前面的字符0次或多次,但尽可能多地匹配。
  • \{n,\}:匹配前面的字符至少n次,但尽可能多地匹配。
  • \{,m\}:匹配前面的字符最多m次,但尽可能多地匹配。
  • \{n,m\}:匹配前面的字符至少n次,最多m次,但尽可能多地匹配。
  • \{n\}:匹配前面的字符恰好n次,但尽可能多地匹配。
  • \?:匹配前面的字符0次或1次,但尽可能多地匹配。
  • \+:匹配前面的字符1次或多次,但尽可能多地匹配。
  • \@=:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \@<=:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \@!:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \@<!:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \@>:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \@<:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \&:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \zs:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \ze:匹配前面的字符0次或多次,但尽可能少地匹配。
  • \%c:匹配当前光标所在的位置。
  • \%v:匹配当前光标所在的位置。
  • \%V:匹配当前光标所在的位置。
  • \%l:匹配当前光标所在的位置。
  • \%L:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在的位置。
  • \%c:匹配当前光标所在
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • python中的ideavim有什么作用_IdeaVim插件施用技巧

    IdeaVim插件使用技巧在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件在日常编程中的一些常用小技巧。供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考。当然基本的hjkl移动光标和几种常见模式等等基本概念就略过不提了。为了确保只包含常用操作,这里提到的技巧都没有从现成文档里抄,而是凭记忆列出(不常用自然就不记得了)。估计会有所遗漏,慢慢再补充。1. 切换Vim模拟器状态这个插件允许设置一个快捷键一键开启或关闭,在切换模式时会同时自动切换keymap,十分方便。默认键位是Ctrl+Alt+V,但这个键位覆盖了很常用的“抽取局部变量”功能,建议重设,在setting->keymap中查找VIM Emulator即可。由于开启和关闭状态分别使用两套keymap,因此两套都需要设定。可以把两套keymap下的都设为一样的键,也就是用同一个键切换。但个人建议设为不同的键,这样能清楚知道当前处于那种模式中。并且,如果在开启Vim的插入模式下关闭Vim模拟器,下次进入时仍然是插入模式,比较混乱(因为你关闭模拟器就是为了使用默认keymap输入大段代码,重新开启Vim模拟器就是为了使用普通模式下的命令)。因此建议把Vim keymap中的Exit Insert Mode设为与另一个keymap的Vim Emulator相同的键(也就是进入Vim模拟器的快捷键)。例如,我使用的设定是:Default keymap -> Vim Emulator : Ctrl+;     (用Ctrl+分号开启Vim模拟器)Vim keymap -> Vim Emulator : Ctrl+,    (用Ctrl+逗号关闭Vim模拟器)Vim keymap -> Vim Emulator : Ctrl+;    (用Ctrl+分号退出插入模式,进入普通模式)这样,在任何时候只要连按两下ctrl+分号,就能保证必定在Vim模拟器的普通模式中。2. ScrollOff 参数启动Intellij后在Vim模拟器下输入命令 :set so=5 可以令屏幕滚动时在光标上下方保留5行预览代码(也就是光标会在第5行触发向上滚动,或者在倒数第5行触发向下滚动)。在代码窗口比较狭小时(例如单步跟踪调试时)非常方便。可惜仅在Vim模拟器开启时有效。3. 行号定位普通模式下输入 行号G 或 :行号 都能快速定位到某一行。区别在于前者在输入行号时屏幕上没有任何提示,后者则在Vim命令输入框中可以看到输入过程。(题外话:Sublime Text 2也是用 :行号 来快速定位到某行,应该是沿用了Vim的习惯)4. 进入修改进入插入模式的方式有很多,直接选用合适的方式进入插入模式比进入后再用箭头键移动光标要好。常用的有:o – 在当前行下方插入新行并自动缩进O – 在当前行上方插入新行并自动缩进 (普通模式下的大写字母命令用 shift+字母键 输入,下同)i – 在当前字符左方开始插入字符a – 在当前字符右方开始插入字符I – 光标移动到行首并进入插入模式A – 光标移动到行尾并进入插入模式s – 删除光标所在字符并进入插入模式S – 删除光标所在行并进入插入模式c – 删除光标所在位置周围某个范围的文本并进入插入模式。关于范围请看第5点,常用的组合有:caw – 删除一个单词包括它后面的空格并开始插入; ciw – 删除一个单词并开始插入; ci” – 删除一个字符串内部文本并开始插入; c$ – 从光标位置删除到行尾并开始插入; ct字符 – 从光标位置删除本行某个字符之前(保留该字符)并开始插入。等等。C – 删除光标位置到行尾的内容并进入插入模式 (相当于c$)r – 修改光标所在字符,然后返回普通模式R – 进入覆盖模式5. 范围操作某些普通模式的动作命令后面可以追加一些表示范围的指令,表示该动作将作用在整个范围上。这类命令常用的有:d – 删除一定范围内的文本c – 删除一定范围内的文本并进入插入模式y – 将范围内的文本放入0号和”号注册栏v – 选择范围内的文本= – 自动缩进范围内的文本gU – 将范围内的字符转换为大写gu – 将范围内的字符转换为小写> – 将范围中的内容缩进一格< – 将范围中的内容取消缩进一格常用的范围指令有:空格 – 光标所在位置字符。(例如 gU空格 – 将光标位置字符转为大写)重复某些动作命令 – 光标所在行。 (例如dd删除一行,yy复制一行,cc删除一行文本并开始插入,>> 当前行缩进一格,==自动缩进当前行)$ – 从光标位置到行尾^ – 从光标位置到行首,不包含缩进空白0 – 从光标位置到行首,包含缩进空白gg – 从光标位置到文件开头G – 从光标位置到文件结尾% – 从光标位置到另一边匹配的括号f – 从光标位置到光标右边某个字符首次出现的位置,包括该字

    03
    领券