【问题标题】:Sublime 3: Selecting text without line numbers (from find all results)Sublime 3:选择没有行号的文本(从查找所有结果)
【发布时间】:2017-03-24 00:43:24
【问题描述】:

我在项目目录中进行了查找,结果如下:

/home/yusuf/Downloads/concept/concept/css/style.css:
  234    position: relative;
  235  }
  236: .scrolled .fh5co-nav {
  237    background: #fff;
  238    padding: 10px 0;
  ...
  241    box-shadow: 0px 5px 7px -7px rgba(0, 0, 0, 0.15);
  242  }
  243: .scrolled .fh5co-nav a {
  244    color: #000;
  245  }

如何选择没有行号的文本?有没有办法在搜索结果中隐藏行号?我想选择代码并将其粘贴到其他地方。

【问题讨论】:

    标签: html css sublimetext3


    【解决方案1】:

    最简单的解决方案是在 OS X 上打开“Find&Replace”(FCtrlH on Windows/Linux)并输入以下选项(RegEx模式,找到^\s+[0-9]+,替换为空)

    【讨论】:

      【解决方案2】:

      没有(记录的)选项可以隐藏在文件中查找结果中的行号。为了不复制行号,您需要仔细使用多项选择来复制所有行并跳过数字,或者使用 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(使用适当的键绑定)以获得该功能剪切文本并删除行号,如果你也需要这种东西。

      【讨论】:

        【解决方案3】:

        在搜索结果中双击生成的文件路径或任何 txt 字符串以打开要从中复制的原始文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-10
          • 2013-11-12
          • 1970-01-01
          • 2013-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多