在Visual Studio代码中查找和替换

Ada*_*dam 22 replace visual-studio-code

我在VSCode中编辑的文件中有以下行:

...............111.........111.............111..

我想.0s 替换所有s.但是,当我突出显示该行并对.s 执行查找/替换时,文档中的所有. s都将被替换,而不仅仅是我选择的行中的s,即使我切换"在选择中查找"按钮.这是一个错误吗?在其他编辑器中,如果我选择一块文本然后进行查找/替换,它将只查找/替换所选块中的匹配.

以下是您应该能够重现问题的片段.该...............111.........111.............111..行在test_unicode函数内部.

def test_simple2(self):
        """Simple CSV transduction test with empty fields, more complex idx, different pack_size.

        100011000001000 ->
        ..........111....................111..........11111..........111..
        """
        field_width_stream = pablo.BitStream(int('1000110001000001000', 2))
        idx_marker_stream = pablo.BitStream(int('11101', 2))
        pack_size = 4
        target_format = TransductionTarget.JSON
        csv_column_names = ["col1", "col2", "col3", "col4", "col5"]

        pdep_marker_stream = pablo.BitStream(generate_pdep_stream(field_width_stream,
                                                                  idx_marker_stream,
                                                                  pack_size, target_format,
                                                                  csv_column_names))
        self.assertEqual(pdep_marker_stream.value, 63050402300395548)

    def test_unicode(self):
        """Non-ascii column names.

        Using UTF8. Hard coded SON boilerplate byte size should remain the same, column name
        boilerplate bytes should expand.

        100010010000000 ->
        2 + 4 + 9     2 + 4 + 6     2 + 4 + 7
        ...............111.........111.............111..
        """
        field_width_stream = pablo.BitStream(int('100010001000', 2))
        idx_marker_stream = pablo.BitStream(1)
        pack_size = 64
        target_format = TransductionTarget.JSON
        csv_column_names = ["???", "??", "English"]

        pdep_marker_stream = pablo.BitStream(generate_pdep_stream(field_width_stream,
                                                                  idx_marker_stream,
                                                                  pack_size, target_format,
                                                                  csv_column_names))
        self.assertEqual(pdep_marker_stream.value, 1879277596)
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 16.04中使用VSCode 1.12.2.

Mar*_*ark 38

我能够让它工作,但工作流程很差:

  1. CTR-H打开查找/替换
  2. 选择您的文字行
  3. 单击右侧的"在选择中查找"图标
  4. 在输入中输入查找和替换字符
  5. 单击"全部替换"图标

它有效,但你必须为每个新选择重新完成工作流程(当然除了CTR-H).顺便说一下,我在Sublime Text中有完全相同的行为.

你能用regExp找到你的线路吗?它们只包含.和1吗?

  • 为什么这是我用过的唯一一个在选择中查找/替换是火箭科学的编辑器?我不明白 VS Code 团队如何打破数十年的先例,支持这种违反直觉的行为。莫名其妙。 (6认同)
  • 使用 VSCode 的默认行为执行 Replace In Selection 对我来说也不太方便。因此,我刚刚为此编写了一个 VSCode 扩展。虽然后来我发现这篇文章并认为设置“editor.find.autoFindInSelection”:“multiline”可能似乎在某种程度上改善了情况,但我的扩展具有超越 VSCode 的 Replace 的几个优点,并且特别擅长替换短搜索模式(在正则表达式)。我的扩展是“快速替换选择”,在这里:https://marketplace.visualstudio.com/items?itemName=johnnywong.quick-replace-in-selection (5认同)
  • 这个过程很费时间。必须在这里或那里单击才能使代码编辑工作如此基础,而 MS 的 Visual Studio 已经在几十年前做到了这一点,这就是一个笑话。这需要尽快修复。选中文本时按 Ctrl+H 应仅应用于该文本。时期。 (3认同)
  • 打开问题是个好主意。我很惊讶 VSCode 和 Sublime 都让你跳过这些障碍来完成如此简单的任务。例如,您不能在我的回答中反转上面的第 3 项和第 4 项——这似乎容易出错和受挫。 (2认同)
  • 问题已开放:https://github.com/Microsoft/vscode/issues/27083。如果他们找到解决方案,将发布答案。 (2认同)
  • 该线程中对我适用的最新更新的建议是更改此设置(文件 > 首选项 > 设置,然后将其粘贴):“editor.find.autoFindInSelection”:true (2认同)

Ada*_*dam 14

来自VSCode开发者:

我们曾经在使用选择打开查找窗口小部件时自动启用查找选项,但是它太容易被意外触发并产生大量投诉.您可能想要设置"editor.find.autoFindInSelection":true,这将使其按预期方式工作.

如果有人感兴趣,VSCode GitHub问题有更多细节.

编辑:该autoFindInSelection选项从VSCode 1.13开始提供.该版本目前正在开发中(截至2017年6月7日),因此在新版本发布之前,此修复程序将无效.

  • 这不会解决问题但是......唯一的问题是,如果你每次选择一组新文本时都连续F/R**你需要重新聚焦查找字段**以便它改变它的*找到上下文*. (5认同)
  • 设置 `editor.find.autoFindInSelection` 现在需要一个字符串,而不是布尔值。有效值为:“从不”、“总是”、“多行” (3认同)
  • 更改设置似乎对我有用,尽管 VS Code 仍然标记整个文档中搜索词的所有出现,即使它只会替换选择中的搜索词。 (2认同)

use*_*745 11

对于苹果机

  1. command+ option+f调出此菜单:

在此输入图像描述

  1. 按上方有箭头的小图标(3 个水平条)

  2. 选择要查找和替换的文本,然后输入“查找”和“替换”字段

  3. 按此图标:

在此输入图像描述

  1. 就这样!


Sur*_*gch 7

对于来这里只是想使用基本查找和替换功能的其他用户,这是一个更通用的答案。

在Mac上,您可以按Command+ Option+ F打开查找和替换:

在此处输入图片说明

或者,您可以按Command+ F打开“查找”,然后单击左侧的小三角形以显示“替换”字段:

在此处输入图片说明

  • 顺便说一句,右边有 4 行的图标是“Toggle Find in Selection” (3认同)
  • 我启用了 sublime keymap,所以不确定它是否适用于所有人,但我能够使用 CMD + OPT + f 立即打开查找和替换 (2认同)
  • 谢谢!另外,忘记提及其他一些有趣的事实:如果您按 CMD + ENTER,则会设置整个文件的查找和替换。否则,您可以使用 Enter 单步执行每一项。您还可以通过 CMD + SHIFT + H 进行项目全局查找和替换 (2认同)
  • 是的,右边那个带有几条横线的图标就是选择查找和替换的关键! (2认同)

小智 7

刚刚遇到这个,我的解决方案是

  1. 命令+N创建一个新文件
  2. 将我的选择粘贴到那里
  3. 对该 while 文件执行查找和替换操作
  4. 将结果复制回我原始选择的顶部


小智 7

好吧,这真的很蠢,一开始当我终于找到这个的时候我觉得很蠢,然后我意识到这只是 VS Code 的界面很糟糕。

关键是,这里有两个工具,搜索/替换(资源管理器顶部左侧的窗格)和查找/替换(按 CTRL-F 时打开的对话框)

这些不是同一个工具!

  • SEARCH-REPLACE 是一个为项目范围内的搜索和更改而编写的工具
  • FIND-REPLACE 是一个小型对话,最适合进行外科手术式的编辑。

即你应该使用查找替换!

查找替换窗口图像并突出显示在选择中查找

此外,以正确的顺序执行这些步骤非常重要,否则不会给出预期的结果。

  1. 按 CTRL-F 打开查找对话框(通常在右上角打开)
  2. 按查找字段右侧的小箭头,打开替换输入字段
  3. 确保“在选择中查找”已关闭(即不突出显示)
  4. 在字段中输入您要搜索/替换的字符串
  5. 选择您想要在其中进行搜索/替换的文本。
  6. 现在按“在选择中查找”(或键入 ALT-L)
  7. 您应该只在之前选择的区域中看到突出显示的内容。
  8. 现在您可以单击“全部替换”(CTRL-ALT-ENTER) 或逐行“替换”(ENTER)

我希望这有帮助。

我对 VSC 开发人员的建议是,应该有一个刷新按钮,以便在您选择感兴趣的区域并且已经定义了查找和替换字符串后,您可以选择一个新区域并单击“刷新查找”,而无需重复步骤 3 至 8。


小智 6

我发现以下工作流程非常轻松:

  1. 用鼠标或键盘选择文本区域。
  2. Ctrl + H切换查找和替换
  3. Alt + L切换选择中的查找
  4. Ctrl + Alt + Enter替换所有(或输入单独替换)


Phi*_*aro 6

因为有时我们可能有类似命名的东西,所以你不想选择所有东西,我最喜欢的快捷方式之一是选择下一个

  1. 使用shift和 箭头突出显示要匹配的术语。
  2. 使用Ctrl+d突出显示该术语的下一次出现。

下一次选择

VS Code文档页面中的基本编辑在查找和替换方面有一些非常有用的变化。一个非常有用的快捷方式是Column (Box) Selection


dan*_*ang 5

在 Mac 上:

  • 选择文字
  • 按 command + shift + L