Vim 搜索/替换,%s 的含义

问题描述 投票:0回答:5

在 Vim 中,您可以通过以下方式搜索/替换文本。

:%s/old/new

%s 是什么意思?

vim replace
5个回答
47
投票

%
:s
命令(
:substitute
的缩写)运行的范围。
%
本身是范围
:1,$
的缩写,意思是
Line 1 to the last line in the buffer

Vim 帮助有几个主题(用户手册 - :help 10.3,参考手册 - :help cmdline-ranges)描述了范围可以采用的形式。


19
投票

:s
:substitute
的缩写)的语法是:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

%
范围表示“整个文件”。

这个功能非常强大;如果您只想在第 1 行进行替换,您可以使用:

:1s/a/b/

或者,仅适用于第 1 至 3 行:

:1,3s/a/b/

一个非常有用的(相关)技巧,是使用视觉模式(

V
)突出显示线条,然后使用
:s
仅替换您突出显示的线条。

参见:

:help [range]


2
投票
:%s/old/new/

这将在整个文档中搜索“old”,并将每行的第一个实例替换为“new”。 您可以使用

:%s/old/new/g
将所有“旧”实例替换为“新”。

(根据 jamessan 的评论更新了答案)。


1
投票

%s 代表整个文档。请看这里:

http://vim.wikia.com/wiki/Ranges


0
投票

如果对某人有帮助,请使用 Emacs(邪恶模式)

供选择

:'<,'>s/旧/新/

当前行

:s/旧/新/

所有文件

:%s/旧/新/

还可以:

  • 忽略大小写添加
    /i
    :s/asd/ewq/i
  • 确认案例添加
    /c
    :%s/asd/ewq/c
    • y(是)
    • n(跳过)
    • 一个(全部)
    • q(取消)
    • l(替换它,然后退出)
© www.soinside.com 2019 - 2024. All rights reserved.