Бесплатный текстовый редактор с полной поддержкой режима столбцов

Если кто-то достаточно взрослый, чтобы помнить редактор 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 ": я до сих пор использую (и люблю) его более или менее каждый день... PS (если хотите лишнюю шутку): что такое (коротко) Сообщение ISPF отображается (вверху справа), если вы сохраняете члена PDS с именем «НЕ»… действительно, «член НЕ сохранен»… Подумайте об аналогичном сообщении для члена с именем ВОЗМОЖНО…
Доступно ли оно для Windows?
да, это ... см. ответ, который я только что опубликовал ...
мерси за щедрость!
Приносим свои извинения, что так долго ждали награды. Может быть, я должен был добавить интереса? Отличный ответ. Я уверен, что нашел его много лет назад, но это было не бесплатно. Фантастика, что это сейчас. Мне понравился этот редактор! Теперь нужно попытаться найти IDE, которая будет его использовать, чтобы я мог также компилировать и отлаживать :-)
что именно вы имеете в виду под последней фразой в вашем последнем комментарии?
Я имею в виду, что это отличный редактор, но при кодировании мне нужна и IDE - и редактор, из которого я могу компилировать свой код и использовать отладчик. Я сомневаюсь, что это будет возможно с ISPedit, но все же я очень доволен этим.

Ответы (4)

Хотя я еще не на пенсии, я « достаточно взрослый, чтобы помнить редактор 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++/2: «Python Script» и «ColReplace»

Я написал для вас специальный плагин.

Тебе нужно:

  1. Блокнот++
  2. Скрипт Python — плагин для Notepad++
  3. ColReplace — следуйте приведенным ниже инструкциям по установке.


  • Все три продукта бесплатны.
  • Все три продукта работают (только) в Windows.
  • ColReplace может заменить на основе ограничений строки и столбца.

ColReplace

Плагин для Notepad++, который предоставляет функцию поиска/замены с ограничениями по строкам и столбцам.

Я никогда раньше не программировал на Python, поэтому код может быть не очень питоническим. Любые предложения или улучшения приветствуются!

Монтаж

  1. Загрузите репозиторий ColReplace в виде ZIP-файла: щелкните здесь и распакуйте файлы в произвольное место.
  2. Откройте Блокнот++
  3. В меню нажмитеPlugins --> Python Script --> New Script
  4. Выберите ColReplace.pyв качестве имени файла и нажмите Сохранить .
  5. Скопируйте содержимое извлеченного ColReplace.pyфайла в файл, который вы только что создали на шаге №5.

Применение

  1. В меню нажмите Plugins --> Scripts --> ColReplace.
  2. Появляющиеся диалоги должны говорить сами за себя.

Скриншоты

По общему признанию, пользовательский опыт мог бы быть улучшен :)

Скриншот №2 Скриншот №3 Скриншот №4 Скриншот № 5

Как бы Notepad++ не представлял для меня личного интереса, простой +1 не соответствует 5-часовому циклу от вопроса о доступном программном обеспечении до публикации пользовательского плагина с открытым исходным кодом, который решает проблему! Это то, что сделает этот сайт замечательным.
Проверено и работает!! Спасибо 1 000 000. Я хотел бы, чтобы я мог дать некоторые из моих очков SO в качестве награды за это. Когда я наберу здесь еще несколько очков, я вернусь и вознагражу это. Пожалуйста, напомните мне, если я забуду. И, еще раз, спасибо!
Это вдохновило меня написать несколько собственных плагинов (это то, что я должен был сделать в первую очередь).
@Mawg Добро пожаловать :) Большое спасибо за ваш приятный отзыв.
Эй, @Mawg ... похоже, ты до сих пор не предоставил ту «награду», которую когда-либо обещал в своем первом комментарии здесь. В наши дни около 2,5 тысяч представителей, что мешает вам предоставить 500 баллов с помощью такой награды и причины, например, «один из ответов выдающийся»? Кстати, как насчет линейного интерфейса cmd, подобного этому: c .here .there пиво рыба (используя метки строк '.here' и '.there', я надеюсь, вы понимаете, что я имею в виду...).
@Mawg - вот еще одно напоминание, теперь, когда у вас более чем в три раза больше повторений, подразумеваемых последним напоминанием два года назад. ;)
Извините, что я забыл. Сейчас я разместил награду в 100 баллов, но не могу присудить ее в течение 23 часов, так что не забудьте напомнить мне, если я тоже забуду об этом :-)
Это было слишком заманчиво, чтобы не публиковать конкурирующий ответ...
Я награжу вас ответом SPFLite. Спасибо 1 000 000
Награжден. Спасибо за напоминания, ребята :-) Кажется, я видел SPFlite лет 10 назад, но тогда он не был бесплатным. Это, конечно, именно то, что я искал.
@JohnY Посмотрите, что произошло :-) Я получил минус, а еще один ответ - награду. Я мог бы жить с последним, но первое неудачно.
@ComFreek - Ты прав, мне жаль, что так вышло. Я по крайней мере (более чем) отменил ваш отрицательный голос. Как это должно было произойти, так это то, что вы получили награду (вознаграждение за ваши усилия, не говоря уже о том, чтобы сдержать свое слово), и ответ SPFLite был принят (отражая, что это действительно «наиболее подходящий» ответ на вопрос).

Редактор 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, вы сможете выполнить «Заменить-все» в этом выделении. (Это опция в диалоговом окне «Заменить»).

диалоговое окно повторения

+1 Спасибо. uvviewsoft.com/synwrite выглядит красиво. Поскольку я уже использую NotePad++, я, вероятно, продолжу его использовать, но другие могут захотеть рассмотреть SynWrite