Найти и заменить в коде Visual Studio

У меня есть следующая строка в файле, который я редактирую в VSCode:

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

Я хочу заменить все . с 0 с. Тем не менее, когда я выделяю строку и выполняю поиск/замену . 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)

Я использую VSCode 1.12.2 в Ubuntu 16.04.

Ответ 1

Я смог заставить его работать, но рабочий процесс низок:

  1. CTR-H, чтобы открыть Find/Replace
  2. Выберите строку текста
  3. Нажмите значок "Найти в выборе" справа
  4. Введите ваш поиск и замените символы на своих входах
  5. Нажмите значок "Заменить все"

Он работает, но вам нужно пройти рабочий процесс снова для каждого нового выбора (за исключением CTR-H, конечно). BTW У меня такое же поведение в Sublime Text.

Не могли бы вы пойти с regExp, чтобы найти ваши строки? Они содержат только. и 1?

Ответ 2

От разработчиков VSCode:

Мы использовали возможность автоматического выбора в выборе при открытии виджета find с выбором, но это было слишком легко вызвать случайно и вызвало много жалоб. Вероятно, вы хотите установить "editor.find.autoFindInSelection": true, который заставит его работать так, как вы ожидаете.

Проблема VSCode GitHub имеет более подробную информацию, если кому-то это интересно.

EDIT: опция autoFindInSelection доступна начиная с VSCode 1.13. Эта версия находится в разработке (начиная с 6/7/2017), поэтому это исправление не будет работать до тех пор, пока не будет выпущена новая версия.

Ответ 3

Я нашел следующий рабочий процесс довольно безболезненным:

  1. Выберите область текста с помощью мыши или клавиатуры.
  2. Ctrl + H для переключения поиска и замены
  3. Alt + L для переключения поиска
  4. Ctrl + Alt + Enter, чтобы заменить все (или ввести для замены отдельно)

Ответ 4

Это более общий ответ для других пользователей, которые приходят сюда, просто желая использовать базовые функции поиска и замены.

На Mac вы можете нажать Command + Option + F, чтобы открыть Find and Replace:

enter image description here

Также вы можете нажать Command + F, чтобы открыть Find, а затем щелкнуть по маленькому треугольнику слева, чтобы показать поле Replace:

enter image description here