Имитация многострочного редактирования как в SciTE

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Имитация многострочного редактирования как в SciTE

Post by Wave »

Latest post of the previous page:

Рефакторинг-тулзы — они в больших и тяжёлых IDE. Иногда проще воспользоваться быстрым привычным универсальным редактором, в котором есть такая универсальная фича.

И да, гифку я взял из статьи, в которой говорится: лучшая IDE для php — это PHPStorm! Но она, сцуко, тяжёлая и это перевешивает её многочисленные достоинства. Давайте попробуем реализовать её фичи в саблайме…
Пользуюсь ФАРом больше 20 лет © собирательный.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel »

Версия из последнего спойлера помещена в шапку.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Имитация многострочного редактирования как в SciTE

Post by HaRT »

Вчера опять наткнулся на отсутствие до-выделения по словам:
HaRT wrote:Пожелание: чтобы при нажатии [b]CtrlAltShiftLeft[/b]/[b]CtrlAltShiftRight[/b] происходило перемещение активной границы блока к соответствующей (влево/вправо) границе слова в текущей строке — аналогично тому, что происходит с поточным выделением по [b]CtrlShiftLeft[/b]/[b]CtrlShiftRight[/b].
Оправданны ли мои надежды на реализацию этой фичи?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel »

HaRT wrote: Оправданны ли мои надежды на реализацию этой фичи?
Сделать, наверное, можно, только вот эта фича она ведь никак не связана с сабжем (так же как и уже реализованная фича OptReplaceBlock). То-есть получается как бы этот скрипт будет являться набором не очень-то связанных фич.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Имитация многострочного редактирования как в SciTE

Post by HaRT »

Shmuel wrote: То-есть получается как бы этот скрипт будет являться набором не очень-то связанных фич.
Так может „не профильные“ фичи выделить в отдельный скрипт? Для меня разделить обсуждение не составит труда.
Просто фичи-то очень взаимосвязанные, т.к. удобство „основных“ сильно зависит от наличия „вспомогательных“.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel »

Я сейчас попробовал на вертикальном блоке CtrlAltLeft и CtrlAltRight - вроде Фар и сам делает то, что вы хотите. :)
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Имитация многострочного редактирования как в SciTE

Post by HaRT »

Shmuel wrote: CtrlAltLeft и CtrlAltRight - вроде Фар и сам
О, точно, спасибо!
Фар есть инструмент, а не нянька. © 2009 DrKnS
vasily123
Posts: 16
Joined: Tue 22 Apr, 2014 09:03
Has thanked: 2 times
Been thanked: 2 times

Имитация многострочного редактирования как в SciTE

Post by vasily123 »

Shmuel, спасибо огромное за этот скрипт! Еще бы его в стандартный дистрибутив :)
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Имитация многострочного редактирования как в SciTE

Post by Wave »

Захотелось всё-таки докопаться, что у меня мешает этому макросу при выключенных постоянных блоках. И вот результат:

FAR86 абсолютно нулячий, т.е. из профиля удаляю все *.db. Из плагинов стоит только LuaMacro, из макросов только scite_like. Без ConEmu (хотя не влияет).
Если постоянные блоки в редакторе включены, макрос работает идеально. Если выключены — первое же нажатие на любую клавишу курсора сбрасывает выделение. Кроме того, имеются глюки вида:

Code: Select all

local
local
local
Выделяю столбиком три буквы l, жму f, получаю

Code: Select all

focal
ocal 
ocal 
и сброшенное выделение. И только Del или BS работают в таком режиме как надо.

Всевозможные настройки типа «Del удаляет блоки» и прочая пытался в разных комбинациях совместить. Но результат один и тот же, макрос правильно работает только если включена опция «постоянные блоки».

Опробованы билды 4695, 4720. Так же пробовал это на сборке FAR Manager UE3 от Victor_VG, тоже один из каких-то недавних билдов.
Shmuel wrote:Wave, могу только предположить (ещё раз), что у вас вмешиваются какие-то плагины или макросы. Никто кроме вас это проверить не может.
Если у вас без постоянных блоков макрос работает правильно, может быть это у вас есть какой-то плагин, макрос или опция, которые влияют на?
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Имитация многострочного редактирования как в SciTE

Post by HaRT »

Wave wrote: Если выключены — первое же нажатие на любую клавишу курсора сбрасывает выделение.
У меня стрелки влево/вправо действительно сбрасывают, хотя при постоянных блоках перемещают выделение.
Wave wrote: Выделяю столбиком три буквы l, жму f
Тут у меня более-менее: буква f вставляется во все три строки, неожиданностью является только то, до, после или вместо l (в зависимости от положения каретки относительно выделения).
Wave wrote: может быть это у вас есть какой-то плагин, макрос или опция, которые влияют
Проверял без прочих плагинов и макросов, опции не перещёлкивал. Far Manager v3.0 build 4727 x86 (2016-06-27)
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel »

Wave
Макрос из поставки именно так и работает. Но в макросе есть 3 опции для установки пользователем. Вы должны установить
local OptCursorMoveResetsBlock = false.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Имитация многострочного редактирования как в SciTE

Post by Wave »

Shmuel wrote:Wave
Макрос из поставки именно так и работает. Но в макросе есть 3 опции для установки пользователем. Вы должны установить
local OptCursorMoveResetsBlock = false.
Так…
Нашёл двух виновников глюков. Набор макросов turbo и плагин [esc]. С набором макросов выделение не держится, сбрасывается от любого чиха вне зависимости от опции OptCursorMoveResetsBlock (кстати, не перечитывая тему с начала, напрочь не могу представить, почему эта опция по умолчанию true). Плагин отвечает за глюки вида «в одной строке замена символа, в остальных удаление». Не знаю, возможно, можно настроить плагин на совместное существование, но вот тут уж точно мне лень искать, в чём засада. От turbo я бы и отказался, но не от [esc].

Разница между включенными постоянными блоками и выключенными блоками и опцией — при выключенных блоках клавиши home и end сбрасывают выделение (хотя, возможно, это тоже из-за плагинов-макросов типа smart home).
Пользуюсь ФАРом больше 20 лет © собирательный.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel »

Wave
Про Turbo и его влияние на данный скрипт уже обсуждалось выше по теме, повторяться не буду.
Насчёт Esc ничего не скажу, т.к. не пользуюсь.
Что касается опции OptCursorMoveResetsBlock - она влияет только при отключенных постоянных блоках (у меня они всегда включены). Это было (кажется) пожелание HaRT, и я сделал вывод, что такое умолчательное значение предпочтительно для пользователей с отключенными постоянными блоками.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Имитация многострочного редактирования как в SciTE

Post by HaRT »

Wave wrote: Нашёл двух виновников глюков. Набор макросов turbo и плагин [esc]. С набором макросов выделение не держится, сбрасывается от любого чиха вне зависимости от опции OptCursorMoveResetsBlock
Я как раз вчера для себя эту проблему решил.
Фар есть инструмент, а не нянька. © 2009 DrKnS
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Имитация многострочного редактирования как в SciTE

Post by ccaid »

Shmuel, обращаю ваше внимание, что имеет смысл обрабатывать CtrlS.
например, у меня используется макрос, который подменяет Left на CtrlS, в результате scite_like работает с артефактами (курсор влево — а выделение на месте). решается без труда, когда знаешь, но это ж надо было собраться и разобраться.
Фар делают добрые люди
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel »

ccaid wrote: Mon 14 Jan, 2019 22:05 у меня используется макрос, который подменяет Left на CtrlS
Вы, наверное, хотели сказать, что подменяет CtrlS на Left?
ccaid wrote: Mon 14 Jan, 2019 22:05 имеет смысл обрабатывать CtrlS
Честно говоря, не уверен в этом. У меня, например, на CtrlS висит макрос, сохраняющий изменения, т.е. вызывающий F2, а на F2 висит вызов пользовательского меню. Но дело не в этом, а в том, что у данного скрипта нет возможности учесть макросную замену клавиш навигации (у вас это CtrlS->Left, а у кого-то другого может быть CtrlD->Right и т.д. и т.п.)

P.S.
Сейчас записал клавиатурный макрос, вызывающий Keys("Left") при нажатии CtrlS. И вроде всё нормально, сабжевый скрипт одинаково обрабатывает Left и CtrlS.
Last edited by Shmuel on Mon 14 Jan, 2019 22:54, edited 1 time in total.
Post Reply

Return to “Полезные макросы и скрипты”