Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code vscode:用于执行简单全局搜索的扩展_Visual Studio Code_Vscode Extensions - Fatal编程技术网

Visual studio code vscode:用于执行简单全局搜索的扩展

Visual studio code vscode:用于执行简单全局搜索的扩展,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我想创建一个扩展,它执行一项非常简单的任务: 我使用以下命令从命令托盘调用命令: > commandName: Query 它应该在正则表达式模式下启动全局搜索,并使用: SomeToken AnotherToken (some|regex*|prefix?|foo) Query 重点是我不想一直键入SomeToken和另一个token(some | regex*| prefix?| foo)前缀。 这听起来是一个非常简单的过程,我希望它在vscode中是可能的,但是我还没有在VSCo

我想创建一个扩展,它执行一项非常简单的任务:

我使用以下命令从命令托盘调用命令:

> commandName: Query
它应该在正则表达式模式下启动全局搜索,并使用:

SomeToken AnotherToken (some|regex*|prefix?|foo) Query
重点是我不想一直键入
SomeToken和另一个token(some | regex*| prefix?| foo)
前缀。


这听起来是一个非常简单的过程,我希望它在vscode中是可能的,但是我还没有在VSCode API和相关教程中找到任何关于它的内容。

我发布了一个扩展,允许您创建和保存预定义的find/replaces或search/replaces:并通过命令调色板中的命令或通过键绑定调用它们。示例设置:

    "findInCurrentFile": {
        "upcaseSwap2": {
            "title": "swap iif <==> hello",
            "find": "(iif) (hello)",
            "replace": "_\\u$2_ _\\U$1_",  // double-escaped case modifiers
            "restrictFind": "selections"
        },
        "upcaseSelectedKeywords": {
            "title": "Uppercase selected Keywords",
            "find": "(epsilon|alpha|beta)",
            "replace": "\\U$1",
            // "restrictFind": "selections"
        }
    },

    "runInSearchPanel": {
        "removeDigits": {
            "title": "Remove digits from Arturo",
            "find": "^(\\s*Arturo)\\d+",
            "replace": "$1",
            "isRegex": true,
            "triggerSearch": true,
            // "filesToInclude": "${file}"
            "filesToInclude": "${file}",
        }
    },

下面是使用
vscode.commands.registerCommand
调用中所选文本的扩展代码的核心:


let disposable=vscode.commands.registerCommand('myExtensionName.myCommand',函数(){
//获取所选文本或在此处打开输入框
const selection=vscode.window.activeTextEditor.selection;
const selectedText=vscode.window.activeTextEditor.document.getText(选择);
常量搜索选项={
查询:“(enum | struct | fn | trait | impl()?| type)”+selectedText,
触发器搜索:是的,
伊斯雷格斯:没错
};
vscode.commands.executeCommand('workbench.action.findInFiles',searchOptions);
});
context.subscriptions.push(一次性);

这将打开一个输入框,从用户处获取查询条件:


let disposable=vscode.commands.registerCommand('myExtensionName.myCommand',函数(){
vscode.window.showInputBox({prompt:“输入搜索查询”})。然后(查询=>{
常量搜索选项={
查询:“(enum | struct | fn | trait | impl()?| type)”+query,
触发器搜索:是的,
伊斯雷格斯:没错
};
vscode.commands.executeCommand('workbench.action.findInFiles',searchOptions);
})
});
context.subscriptions.push(一次性);

显然,您必须添加一些错误检查。

为什么搜索栏对您不起作用(Ctrl+Shift+F),还要查找此Bar顶部的
打开新搜索编辑器
按钮我不喜欢手动打开搜索栏(即使是通过键盘,我已经这样做了)因为键入regex前缀会很麻烦,我想优化我的工作流程:)。我将在问题中说明这一点。搜索和替换字段有历史记录,请使用向上和向下箭头键。您可以让扩展插件用所需字符串填充剪贴板,或者您可以尝试设置一个使用
type
命令键入所需字符串的键绑定,或者在焦点位于搜索查找字段(keybinding
where
子句)时让扩展插件使用
type
命令历史记录很酷,但对于我的用例来说,这并不是最理想的。剪贴板是一个更好的步骤,但仍然添加了一个冗余步骤,您需要手动调用搜索。type命令似乎是最有前途的,但我想知道,您是否也可以(以编程方式)将焦点强制放在search-find字段上?然后,我可以通过一次命令调用来实现整个过程的端到端。每个f代表什么:
SomeToken另一个token(some | regex*| prefix?| foo)
?如果我们不知道您想在哪里输入什么,那么很难提供帮助。
SomeToken
是搜索词吗,
AnotherToken
是替换词吗?
(some | regex*| prefix?| foo)
到底是什么?很抱歉我耽搁了@Mark几天,我很忙,把它书签在书签里,以便稍后再签出。你的回答非常好,现在我有一些非常好的选择来满足我的需要。谢谢一旦我尝试了所有的方法,我会写进一步的反馈。
{
  "key": "ctrl+shift+g",                    // whatever keybinding you wish
  "command": "search.action.openNewEditor",
  "args": {

    "query": "(enum|struct|fn|trait|impl(<.*>)?|type) ${selectedText}",

    "isRegexp": true,

    // "includes": "${relativeFile}",  // works

    "showIncludesExcludes": true,
    "triggerSearch": true,
    "contextLines": 2,
    "focusResults": true,
  },
  "when": "editorTextFocus"
}
  {
    "key": "ctrl+shift+f",
    "command": "workbench.action.findInFiles",
    "args": {

      "query": "(enum|struct|fn|trait|impl(<.*>)?|type) ",
      "isRegex": true,
      // "replace": "$1",
      "triggerSearch": true,                          // seems to be the default
      // "filesToInclude": "${relativeFileDirname}",  // no variables in findInFiles
      "preserveCase": true,
      "useExcludeSettingsAndIgnoreFiles": false,
      "isCaseSensitive": true,
      // "matchWholeWord": true,
      // "filesToExclude": ""
    }
  },