vim - 如何在非连续行上运行命令行命令,指定单独的行号?

标签 vim

例如,假设我想将第 1、3、11 和 15 行的 foo 替换为 bar。我该怎么做?

:1,15s/foo/bar

将第 1-15 行的 foo 替换为 bar。但我想指定多个单独的行 (1,3,11,15),而不是一个范围 (1-15)。

最佳答案

一种方法:对第一行执行 :substitute,然后在后面的行中用 :&& 重复相同的替换。

:execute '1s/foo/bar' | 5&& | 11&& | 15&&

另一种方法:使用 :global 命令和仅在行中匹配的模式。

:g/\%1l\|\%5l\|\%11l\|\%15l/s/foo/bar

第三种方式:使用循环:

:for l in [1,5,11,15] | execute l.'s/foo/bar' | endfor

关于vim - 如何在非连续行上运行命令行命令,指定单独的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288685/

相关文章:

vim - Ctrl-o 忽略 "No write since last change"

vim - 有人可以给我指出一个很好的适用于 Windows 的 Vi(或 Vim)应用程序吗?

vim - 在 vimrc 中设置 vim 全方位完成颜色(Pmenu)不起作用

search - 如何在 Vim 中搜索打开的缓冲区?

macos - 将代码粘贴到终端窗口到 Mac OS X 上的 vim 中

vim - 为什么我的 gnome 终端无法设置颜色方案

python - Vim 的 Python Omnicompletion 不起作用

vim - 配置 Macvim 的文本选择不包含光标下的字符

vim - 什么是 vim 中的排除正则表达式模式

vim - vim:关闭多个标签前先确认