Найти и заменить в коде 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
Я смог заставить его работать, но рабочий процесс низок:
- CTR-H, чтобы открыть Find/Replace
- Выберите строку текста
- Нажмите значок "Найти в выборе" справа
- Введите ваш поиск и замените символы на своих входах
- Нажмите значок "Заменить все"
Он работает, но вам нужно пройти рабочий процесс снова для каждого нового выбора (за исключением 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
Я нашел следующий рабочий процесс довольно безболезненным:
- Выберите область текста с помощью мыши или клавиатуры.
- Ctrl + H для переключения поиска и замены
- Alt + L для переключения поиска
- Ctrl + Alt + Enter, чтобы заменить все (или ввести для замены отдельно)
Ответ 4
Это более общий ответ для других пользователей, которые приходят сюда, просто желая использовать базовые функции поиска и замены.
На Mac вы можете нажать Command + Option + F, чтобы открыть Find and Replace:
![enter image description here]()
Также вы можете нажать Command + F, чтобы открыть Find, а затем щелкнуть по маленькому треугольнику слева, чтобы показать поле Replace:
![enter image description here]()