簡體   English   中英

在所選內容中的 Visual Studio 代碼中查找和替換

[英]Find and replace in Visual Studio code in a selection

我在 VSCode 中編輯的文件中有以下行:

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

我想全部換掉. s 與0 s。 但是,當我突出顯示該行並查找/替換. s,所有. 文檔中的 s 被替換,而不僅僅是我有 select 行中的那些,即使我切換“在選擇中查找”按鈕也是如此。 這是一個錯誤嗎? 在其他編輯器中,如果我 select 一段文本然后進行查找/替換,它只會查找/替換所選塊內的匹配項。

以下是您應該能夠重現問題的片段。 ...............111.........111.............111..行位於test_unicode function 內。

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)

我在 Ubuntu 16.04 中使用 VSCode 1.12.2。

我能夠讓它工作,但工作流程很差:

  1. control + H打開查找/替換
  2. 選擇你的文本行
  3. 單擊右側的“在選擇中查找”圖標Alt L L在 macOS 上)
  4. 在輸入中輸入您的查找和替換字符
  5. 單擊全部替換圖標

它可以工作,但是您必須為每個新選擇重新完成工作流程(當然, CTR + H除外)。 順便說一句,我在 Sublime Text 中有完全相同的行為。

你能用一個正則表達式來找到你的行嗎? 它們是否僅包含 . 和 1?

對於其他只想使用基本查找和替換功能的用戶來說,這是一個更通用的答案。

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

在此處輸入圖像描述

或者,您可以按Command + F打開查找,然后單擊左側的小三角形以顯示替換字段:

在此處輸入圖像描述

來自 VSCode 開發人員:

我們曾經在打開帶有選擇的查找小部件時自動啟用在選擇中查找,但是太容易意外觸發並產生很多抱怨。 您可能想要設置 "editor.find.autoFindInSelection": true 這將使它按您期望的方式工作。

如果有人感興趣, VSCode GitHub issue有更多詳細信息。

編輯: autoFindInSelection選項從 VSCode 1.13 開始可用。 該版本目前正在開發中(截至 2017 年 6 月 7 日),因此在新版本發布之前,此修復程序將不起作用。

我發現以下工作流程相當輕松:

  1. 用鼠標或鍵盤選擇文本區域。
  2. Ctrl+H 切換查找和替換
  3. Alt+L 在選擇中切換查找
  4. Ctrl+Alt+Enter 全部替換(或回車單獨替換)

因為有時我們可能有類似命名的東西,所以你不想選擇所有東西,我最喜歡的快捷方式之一是選擇下一個出現

  1. 使用shift和箭頭突出顯示要匹配的術語。
  2. 使用Ctrl + d突出顯示下一個出現的術語。

下一次出現選擇

VS Code 文檔頁面中的基本編輯在查找和替換方面有一些非常有用的變體。 一個非常有用的快捷方式是Column (Box) Selection

在 Mac 上:

  • 選擇文本
  • 按命令 + shift + L

剛遇到這個,我的解決方案是

  1. command + N 創建一個新文件
  2. 將我的選擇粘貼到那里
  3. 對該文件進行查找和替換操作
  4. 將結果復制回我的原始選擇之上

好吧,這真的很愚蠢,當我終於找到這個時,我一開始覺得很愚蠢,然后我意識到它只是 VS Code,界面很糟糕。

關鍵是,這里有兩個工具,搜索/替換(資源管理器頂部左側的窗格)和查找/替換(按下 CTRL-F 時打開的對話框)

這些不是同一個工具!

  • SEARCH-REPLACE 是為項目范圍的搜索和更改而編寫的工具
  • FIND-REPLACE 是一個小型對話,最適合進行更多手術編輯。

即你應該使用 FIND-REPLACE!

查找替換窗口圖像並突出顯示選擇中的查找

此外,以正確的順序執行這些步驟非常重要,否則它不會給出預期的結果。

  1. 按 CTRL-F 打開查找對話框(通常在右上角打開)
  2. 按查找字段右側的小箭頭,打開替換輸入字段
  3. 確保“在選擇中查找”已關閉(即未突出顯示)
  4. 在字段中輸入要搜索/替換的字符串
  5. 選擇要在其中進行搜索/替換的文本。
  6. 現在按“在選擇中查找”(或鍵入 ALT-L)
  7. 您應該只會在之前選擇的區域中看到突出顯示。
  8. 現在您可以單擊“全部替換”(CTRL-ALT-ENTER)或逐行“替換”(ENTER)

我希望這有幫助。

我對 VSC 開發人員的建議,應該有一個刷新按鈕,以便在您選擇感興趣的區域之后,並且您已經定義了查找和替換字符串,您可以選擇一個新區域並單擊“刷新查找”而不是需要重復步驟 3 到 8。

對於那些仍然無法正常工作的人,在上述所有答案中都省略了一個步驟:如果選中“在選擇中查找”,則取消選中它(這可能是當你正在努力解決它並且絕望地用谷歌搜索問題時,並且然后找到了這個 SO 條目)。 只有然后選擇行,然后重新檢查“在選擇中查找”。

對於蘋果

  1. command + option + f調出此菜單:

在此處輸入圖像描述

  1. 按上面有箭頭指向的小圖標(3個水平條)

  2. 選擇要在其中進行查找和替換的文本,然后輸入“查找”和“替換”字段

  3. 按此圖標:

在此處輸入圖像描述

  1. 就這樣!

對於 Ubuntu,突出顯示要進行更改的行,按 alt-L,然后按 ctrl-H。 然后在右上角的下拉列表中鍵入要替換的名稱和替換名稱。

或這些操作的某種組合,具體取決於下拉菜單是否已打開或您是否已處於 alt-L 模式。 我仍在學習,但我想我會分享有效的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM