当前位置: 首页 > 知识库问答 >
问题:

前端 - 如何通过命令行脚本 实现 ->使用sublime text的 搜索功能?

左仰岳
2024-07-01

场景

我又一个大概10-20M的txt文件, 我使用 sublime text 打开,然后 使用cltr+shift+f(find in files命令) 打开搜索,输入要搜索的文本,然后点击find,搜索的结果如下:包含匹配的内容和行号。
image.png
image.png

这种搜索效果 vscode也能实现。

需求

如何 通过脚本 实现上述功能? 脚本接收输入参数 为搜索的文本, 脚本的执行结果 为 找到的匹配文本和行号。
更优化的方案: 脚本搜索支持 正则、大小写敏感等选项。

目前的参考方向

https://www.sublimetext.com/docs/command_line.html#windows
官方提供了一个 Command Line Interface
image.png

比如 打开指定的文件,并指定find_all这个commnad

D:\tempFiles>subl  index.html

文档中提到 --command <command>: Run the given command 不知道具体有哪些command,以及如何使用

共有3个答案

龚镜
2024-07-01
// deno run -A search.ts input/index.html div
import { readLines } from "https://deno.land/std/io/mod.ts";

async function searchFile(filePath: string, keyword: string) {
    let lineNumber = 0;
    const file = await Deno.open(filePath);

    for await (const line of readLines(file)) {
        lineNumber++;
        if (line.includes(keyword)) {
            console.log(`${lineNumber}: ${line}`);
        }
    }

    file.close();
}

const [filePath, keyword] = Deno.args;

if (!filePath || !keyword) {
    console.error("Usage: deno run searchFile.ts <file-path> <keyword>");
    Deno.exit(1);
}

await searchFile(filePath, keyword);
吴涵育
2024-07-01

我猜测 command 应该是这个:https://www.sublimetext.com/docs/key_bindings.html#command-key

这里面说了:

目前还没有所有内置命令的编译列表。许多命令的名称可以通过查看 Default/ 软件包中的 Default ({PLATFORM_NAME}).sublime-keymap 文件找到。

刚又找到了一个非官方文档,可以参考一下。

  • https://docs.sublimetext.io/guide/extensibility/commands.html...
  • https://docs.sublimetext.io/reference/commands.html
易和怡
2024-07-01

要通过命令行脚本使用Sublime Text的搜索功能并获取结果,你不能直接使用Sublime Text的命令行接口(CLI)来完成,因为Sublime Text的CLI并不直接支持输出搜索结果的文本格式。但是,你可以通过其他命令行工具,如grep(在Unix-like系统上)或findstr(在Windows上),结合Sublime Text来实现这个需求。

以下是使用grep(在Unix-like系统上,如Linux或macOS)的示例步骤:

  1. 不使用Sublime Text:使用grep命令搜索文件。
  2. (可选):将grep的输出格式化为Sublime Text可以接受的格式,然后导入到Sublime Text中查看。

但是,既然你想要直接得到搜索结果的文本输出,那么grep(或findstr)就足够了。

在Unix-like系统上使用grep

grep -n '搜索文本' 文件名.txt

其中:

  • -n 选项告诉grep显示匹配行的行号。
  • '搜索文本' 是你想要搜索的文本。
  • 文件名.txt 是你想要搜索的文件名。

在Windows上使用findstr

findstr /N "搜索文本" 文件名.txt

其中:

  • /N 选项告诉findstr显示匹配行的行号。
  • "搜索文本" 是你想要搜索的文本。
  • 文件名.txt 是你想要搜索的文件名。

支持正则、大小写敏感等选项

  • 对于grep,你可以使用-E来启用扩展正则表达式,使用-i来忽略大小写。
  • 对于findstr,你可以使用/R来启用正则表达式,但它没有直接忽略大小写的选项。你可以通过搜索[sS](其中s代表小写,S代表大写)来模拟大小写不敏感。

脚本示例(Bash)

你可以创建一个Bash脚本来接收搜索文本和文件名作为参数:

#!/bin/bash

SEARCH_TEXT="$1"
FILE_NAME="$2"

grep -n "$SEARCH_TEXT" "$FILE_NAME"

保存为search_in_file.sh,然后通过chmod +x search_in_file.sh使其可执行,然后运行./search_in_file.sh '搜索文本' 文件名.txt

 类似资料:
  • 我正试图用脚本方法安装一个模块,但我不知道如何用节点脚本语言安装,或者如果你有任何想法请与我分享。

  • 问题内容: 我有一个具有某些功能的脚本。 我可以直接从命令行运行功能之一吗? 像这样吗 问题答案: 如果脚本仅定义函数,而不执行其他任何操作,则可以先使用or 命令在当前shell的上下文中执行脚本,然后简单地调用函数。请参阅以获取更多信息。

  • 我试图在mongo shell中使用脚本js。我正在读一本关于这个主题的书。我尝试了几个选项,例如在我的计算机的特定位置打开cmd。我在这里发现了一个问题“如何通过shell脚本执行mongo命令?”,但对我来说似乎什么都不管用。我的mongo工作正常,我可以输入mongo,只需在cmd中键入mongo。但是,它找不到js文件。我正在使用Windows;有人知道引擎盖下会发生什么吗? 例如:

  • 问题内容: PHP必须正确地转义任何可能引起问题的字符。为BASH模仿此功能的最佳方法是什么? 无论如何,有使用bash做准备好的mysql语句吗?这似乎是最好的方法。 我的大多数变量都不会(不应)具有特殊字符,但是我为用户提供了完全自由的密码密码。它可能包含’和’之类的字符。 我可能正在执行多个SQL语句,所以我想创建一个包含参数并随后运行该语句的脚本。这是我到目前为止的内容: doSQL.sh

  • 前端这个文档搜索功能怎么实现的? 我看搜索时没走后端,输入时能瞬间加载出内容,这个搜索是提前将文档缓存到前端吗,为什么每个标题能独立显示

  • 问题内容: 我正在尝试使用自动响应来自动化mysql_secure_installation脚本。我的代码如下: 我正在自动化的实际问题如下: 但这给了我一个错误“很抱歉,您不能在此处使用空密码”,但是在屏幕上,我习惯按第一个问题的返回键。 问题答案: 您可以尝试使用Expect。看看这种自动化的mysql_secure_installation或我的修改。