Если кто-то достаточно взрослый, чтобы помнить редактор ISPF на мейнфреймах IBM, то вы понимаете, о чем я. Для остальных из вас...
Я ищу бесплатный редактор, который позволяет мне редактировать только определенные столбцы текстового файла (желательно только в ряде смежных строк).
NotpePad++, Crimson Editor (который, увы, кажется, дольше находится в разработке) и UltraEdit (который, увы, не является бесплатным) — все заявляют о столбцовом режиме, но это всего лишь возможность копировать/вставлять прямоугольные области текстового файла.
Хотя это, безусловно, хорошо, я хочу, чтобы он мог искать/заменять текст и иметь возможность ограничить его диапазоном или смежными столбцами, предпочтительно также диапазоном смежных строк.
Плохой пример:
Tim likes beer
Toms likes beer very much
Bob does not like either beer or wine
Ann likes beer, and also wine (and the Oxford comma ;-)
и вот снова, с некоторыми номерами строк и столбцов:
1 2 3 4
1234567890123456789012345678901234567890
1 Tim likes beer
2 Toms likes beer very much
3 Bob does not like either beer or wine
4 Ann likes beer, and also wine
Если я хочу заменить все «пиво» на «рыбу» между столбцами 10 и 20, результатом будет (изменения с заглавной буквы).
1 2 3 4
1234567890123456789012345678901234567890
1 Tim likes FISH
2 Toms likes FISH very much
3 Bob does not like either beer or wine<=== not changed, not between cols 10 & 20
4 Ann likes FISH, and also wine
В качестве бонуса я хотел бы также ограничить его определенными строками, скажем, строками со 2 по 4, и в этом случае результат будет таким:
1 2 3 4
1234567890123456789012345678901234567890
1 Tim likes beer <== not changed, not between lines 2 and 4
2 Toms likes FISH very much
3 Bob does not like either beer or wine <== not changed, not between cols 10 & 20
4 Ann likes FISH, and also wine
Вопрос: кто-нибудь знает (желательно) бесплатный текстовый редактор Widows, который может это сделать?
Хотя я еще не на пенсии, я « достаточно взрослый, чтобы помнить редактор ISPF на мейнфреймах IBM »: я все еще использую (и люблю) его более или менее каждый день...
Чтобы на самом деле ответить на ваш вопрос, я предлагаю вам взглянуть на SPFLite . Вот цитата об этом из Википедии :
Редакторы, используемые в среде ПК, обычно работают существенно иначе, чем те, которые работают в больших системах мейнфреймов. Редакторы ПК почти всегда ориентированы на поток символов, в то время как редакторы мэйнфреймов обычно ориентированы на текстовую строку. Таким образом, пользователям, которым необходимо работать как на ПК, так и на мейнфреймах, необходимо продуктивно работать в двух разных стилях работы.
SPFlite — это бесплатный файловый менеджер и текстовый редактор, который обеспечивает на ПК с Windows привычную рабочую среду для тех, кто привык к ISPF на базе мейнфреймов IBM. Помимо обеспечения базовой функциональной совместимости с ISPF, в SPFLite добавлены расширенные возможности для расширения возможностей редактирования.
После того, как вы откроете файл в режиме редактирования, вы сможете решить свой (примерный) вопрос только с помощью этой (основной) команды редактирования:
c beer fish 10 20 all
Но подождите, есть еще ... Если вы также пометите свою строку 2 (скажем), .f
а свою строку 4 .l
- , на ваш бонусный вопрос можно ответить с помощью этой команды:
c beer fish 10 20 all .f .l
Легко, нет?
Я написал для вас специальный плагин.
Тебе нужно:
Плагин для Notepad++, который предоставляет функцию поиска/замены с ограничениями по строкам и столбцам.
Я никогда раньше не программировал на Python, поэтому код может быть не очень питоническим. Любые предложения или улучшения приветствуются!
Plugins --> Python Script --> New Script
ColReplace.py
в качестве имени файла и нажмите Сохранить .ColReplace.py
файла в файл, который вы только что создали на шаге №5.Plugins --> Scripts --> ColReplace
.По общему признанию, пользовательский опыт мог бы быть улучшен :)
Редактор vim
может сделать это из коробки¹. Существует простой установщик Windows для gvim или доступны различные сборки для установки через Chocolaty , cygwin и т. д.
Vim — это режим редактора, что означает, что окно редактора может находиться в нескольких состояниях , включая вставку (где вы вводите текст), обычное (где нажатия клавиш активируют команды, управляющие текстом) и визуальное (где вы можете выбирать блоки текста) .
В визуальном режиме можно выделить текст одним из трех способов:
Посимвольно выбирает диапазоны символов в одной или нескольких строках.
Line-wise выбирает целые строки.
По столбцам выбирает прямоугольный блок символов, ограниченный позициями строки/столбца.
Последний активируется наведением курсора на один угол прямоугольника в обычном режиме и нажатием Ctrlv, а затем перемещением курсора в другой угол. В этот момент вы увидите выделенный столбец.
Затем вам нужно выполнить команду поиска и замены, которая находит совпадения внутри текущего (или последнего) визуального выделения:
:%s/\%Vbeer/fish/g
Обратите внимание, что это будет соответствовать всем экземплярам «пиво», которые начинаются внутри вашего выбора, даже если они заканчиваются за его пределами. Вы бы привязали обе стороны поиска к выделению, если бы не хотели такого поведения:
:%s/\%Vbeer\%V/fish/g
Также обратите внимание, что начало %
в этой команде указывает vim работать со всем файлом. Если перейти прямо в командный режим (нажав :) из визуального режима, подсказка будет предварительно заполнена префиксом :'<,'>
, который работает только с выбранным диапазоном. Это нормально использовать, но поскольку функция поиска и замены работает построчно, вам все равно нужно использовать \%V
для фактического совпадения только внутри выделения.
:'<,'>s/\%Vbeer/fish/g
Для быстрого ознакомления с некоторыми другими вещами, которые вы можете делать в режиме столбца, посмотрите это видео VimCast .
¹ Это не означает, что вы сможете просто использовать редактор из коробки. Есть старая шутка: если вам нужна хорошая строка случайного текста, сядьте за компьютер, не запрограммированный с помощью VIM, и попросите его выйти из редактора. Если вы не знакомы с использованием vim, возможно, стоит потратить несколько минут на вводное руководство , чтобы вы хотя бы знали основы того, как открывать, редактировать, сохранять и выходить из редактора. Парадигма использования немного отличается от большинства приложений, которые вы можете регулярно использовать в Windows. Это может быть очень мощно, но найдите время, чтобы разобраться с основами, прежде чем пытаться использовать более продвинутое использование, подробно описанное в этом ответе.
Редактор SynWrite : если вы выберете блок столбцов, от строки 2 до строки 4 и от столбца 10 до столбца 20, вы сможете выполнить «Заменить-все» в этом выделении. (Это опция в диалоговом окне «Заменить»).
Пьер.Вриенс
Мог говорит восстановить Монику
Пьер.Вриенс
Пьер.Вриенс
Мог говорит восстановить Монику
Пьер.Вриенс
Мог говорит восстановить Монику