我将假设“应用正则表达式”,意味着通过:s多个文件使用替换。
Vim 没有附带“一体化”本机项目范围的查找和替换命令。相反,它通常是一个两步过程:
arg 列表只是一个文件列表。您可以在启动 Vim 时填充它,例如vim *.txt,或者:args在 Vim 启动后通过填充它。
:args *.txt
:argdo %s/foo/bar/g | w
Run Code Online (Sandbox Code Playgroud)
快速修复(和位置列表)只是位置列表,例如文件、行、列。您可以使用许多命令填充这些列表,例如:vimgrep、:grep、:make、:cexpr等。用于:cdo在每个位置运行命令。:cfdo将对列表中的每个文件运行命令。
:vimgrep /foo/ **/*.txt
:cfdo %s/foo/bar/g | w
Run Code Online (Sandbox Code Playgroud)
许多人喜欢使用,:grep因为您可以自定义'grepprg'使用快速 grep 替代方案,例如The Silver Searcher、ripgrep、ack。我还推荐映射 :cnext& :cprev。
您可以使用 .在所有打开的缓冲区上运行命令:bufdo。用于:ls查看您打开了哪些缓冲区。
:bufdo %s/foo/bar/g | w
Run Code Online (Sandbox Code Playgroud)
可以在当前选项卡页中的所有窗口上运行命令:windo。这有助于通过 进行比较:windo diffthis。
:windo %s/foo/bar/g | w
Run Code Online (Sandbox Code Playgroud)
通过在所有选项卡上运行命令:tabdo。
:tabdo %s/foo/bar/g | w
Run Code Online (Sandbox Code Playgroud)
关于更好地查找和替换工作流程的一些想法。
e标志可以防止:s在找不到匹配项时停止。:s//{replacment}以避免再次输入该模式。就我个人而言,我通常使用快速修复列表来进行大多数多个文件替换。我:grep与 ripgrep 一起使用来快速搜索项目。
相关Vimcast剧集:
另请参阅:
:h :s
:h :bar
:h arglist
:h :argdo
:h quickfix
:h :cdo
:h :grep
:h :vimgrep
:h 'grepprg'
:h buffer
:h :bufdo
:h window
:h :windo
:h tabpage
:h :tabdo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
604 次 |
| 最近记录: |