【问题标题】:How to edit multiple files through "Find results" in Sublime Text如何通过 Sublime Text 中的“查找结果”编辑多个文件
【发布时间】:2013-11-07 20:10:38
【问题描述】:

当我通过 Command + Shift + F 搜索多个文件时,结果以文本文件的形式返回。此文本文件是可编辑的,但所做的更改不会影响原始文件。

是否可以将“查找结果”中的更改传播到原始源文件?

【问题讨论】:

  • 据我所知这是不可能的 - 我试图找到任何具有类似功能的东西。
  • @MikkoOhtamaa 现在是。看我的回答。
  • 用正则表达式替换文件并捕获组可能很有用(您甚至可以使用特定的选定或忽略文件或文件夹创建搜索项目)

标签: sublimetext2 sublimetext sublime-text-plugin


【解决方案1】:

Find Results Apply Changes 插件就是为此而创建的。

您可以通过Package Control's“安装包”选项安装它。

在使用此插件之前,请确保您已使用菜单启用 UTF-8 编码:

File > Save with Encoding > UTF-8

安装后,您可以将您对“查找结果”缓冲区所做的任何更改应用回文件:

  • 在文件夹中搜索“foo”(Sublime 的默认快捷键是 CTRL+SHIFT+S
  • 这将打开一个“查找结果”缓冲区,其中列出了所有包含“foo”的文件。
  • 将“foo”的实例更改为“bar”或其他...
  • 进入菜单:

    Find > Find Results - Apply Changes
    
  • 这会将所做的所有更改写回文件并自动保存修改后的文件。

默认情况下,使用菜单是使其工作的唯一方法。但是,它非常烦人,并且不像使用键盘快捷键那样节省时间。您可以通过在

中添加新行来设置您选择的键盘快捷键
Preferences > Key Bindings - User

通过添加:

{ "keys": ["ctrl+r"], "command": "find_results_apply_changes" },

不要使用 CTRL+S 因为它会覆盖保存文件的快捷方式。

警告!:根据插件作者的说法:

使用区域允许您进行多行更改,但在插入新的 换行符,如果您多次提交会损坏文件,这 因为新的换行符会改变行号。也会 如果您在其他实例中添加/删除换行符,则“损坏”文件 修改过的文件。例如在另一个选项卡中。为了防止损坏这个包 会提醒您并阻止其中的大部分。

(这是Find Results Apply Changes Github 页面描述的修改版本。)

【讨论】:

  • 感谢您的详细解答。欣赏
  • 谢谢,但这会从我的查找结果中杀死双击导航。
  • 一个被作者偏见毁掉的好插件。有关详细信息,请参阅他们的 WONTFIX 部分。在 Windows 上几乎无法使用(或任何行尾很重要且与 unix 行尾不同的系统)。
  • 不在 ST3 上?这让我很?
【解决方案2】:

我能想到的最短解决方法是从搜索结果中打开目标文件,只需双击路径,然后使用 Ctrl+G跳转到相应的行> 在 Windows 上或 +G 在 Mac OS 上。

我就是这样做的,必须说这只是几秒钟的事情,即使没有插件。

【讨论】:

  • 是的,但是当您需要更改 100 个文件中的某些内容时,想象一下带有搜索结果文件或类似内容的“搜索和替换”选项。
  • 如果您想更改这 100 个文件中的相同字符串,您可以使用 Replace in files 而不是 Find in files 选项。 (Command+Shift+F 在右下角)。
猜你喜欢
  • 2017-06-23
  • 1970-01-01
  • 2019-03-19
  • 2013-05-21
  • 2014-04-01
  • 2017-08-27
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多