没有(记录的)选项可以隐藏在文件中查找结果中的行号。为了不复制行号,您需要仔细使用多项选择来复制所有行并跳过数字,或者使用 Danill 在他的回答中提到的查找和替换。
但是,通过一些插件代码,您可以让 sublime 为您完成繁重的工作,从而获得两全其美的效果。
例如,从菜单中选择Tools > Developer > New Plugin... 并将缓冲区的内容替换为以下python代码,然后将其保存为例如find_results_copy.py。这需要在您的 User 包中(名称无关紧要,只有扩展名才重要),但如果您使用菜单项创建存根插件,Sublime 应该会自动处理此问题。
[编辑]
插件代码修改为使用单个正则表达式操作,(由于深夜大脑放屁)我最初通过两个操作来实现。
[/编辑]
import sublime
import sublime_plugin
import re
class FindResultsCopyCommand(sublime_plugin.ApplicationCommand):
def run(self):
sublime.active_window ().run_command ("copy")
sublime.set_clipboard (re.sub (r"^\s*[0-9]+.", "",
sublime.get_clipboard (), flags=re.MULTILINE))
这实现了一个名为find_results_copy 的新命令,它首先运行默认的copy 命令,然后使用正则表达式替换修改剪贴板的内容以丢弃行号。
现在您可以实现自定义键绑定来调用此命令。由于我们只希望此命令在查找结果中触发,因此您可以重新使用标准复制键盘快捷键,修改为使用我们的新命令并添加一个使其仅在查找结果中生效的上下文。
本示例使用 Windows/Linux 的键盘命令;如果您使用的是 Mac,请使用 super+c 来映射到该平台的标准密钥。
{"keys": ["ctrl+c"], "command": "find_results_copy", "context":
[
{ "key": "selector",
"operator": "equal",
"operand": "text.find-in-files",
"match_all": true
},
]
},
由于这使用了默认的复制命令,如果您打开了copy_with_empty_selection,这将复制当前行而没有行号,而您不必选择任何内容,如果您习惯于这样工作的话。
如果需要,您还可以复制此命令(您可以将其存储在同一文件中)并将类重命名为 FindResultsCutCommand 并将执行的命令重命名为 cut(使用适当的键绑定)以获得该功能剪切文本并删除行号,如果你也需要这种东西。