akelpad * vim

Russian main discussion

Нужен ли способ навигации/редактирования, подобный ВИМовскому в АкелПаде?

Лишним не будет
3
30%
Не нужен
7
70%
 
Total votes: 10
  • Author
  • Message
Offline
Posts: 9
Joined: Mon Aug 13, 2012 1:57 pm

akelpad * vim

Post by byakas »

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

но скриптов для акелпада я не писал никогда,разбираться с нуля опять таки нет времени, посему хотелось бы получить от сообщества парочку примеров решения конкретных задач. и да, в качестве языка я выбрал js, жаль что нельзя на питоне :))

собственно вот что хотелось бы увидеть:
1) скрипт, который перемещает положение курсора с текущей позиции до позиции первого вхождение некой комбинации символов. тобеш запускаем indexOf для текста, ища заданную комбинацию при этом начало поиска указываем текущим положение курсора. ну а затем перемещаем положение курсора до найденного индекса.
2) скрипт, который выделяет фрагмент текста с текущей позиции курсора на указанное кол-во символов.
3) скрипт, который удаляет выделенные текст.
4) скрипт, который добавляет текст в позицию курсора.
5) это уже скорее не к скриптам, но все же. когда я добавляю вызов скрипта на тулбар (или контекстное меню) командой вида

Code: Select all

"Color" Call("Scripts::Main", 1, "ChooseColor.js") Icon(30)
получившаяся кнопка отображается как нажатая. что я делаю не так?

ну и пожалуй самое главное. со всеми пунктами выше понятно, что ничего сложного нет, просто лениво ковырять документацию. а вот кое с чем непонятно-можно ли скриптом перехватывать нажатия клавиш клавиатуры, допустим если нажат какой то модифкатор. ну или всегда, пока скрипт запущен. иными словами как осуществить ввод данных с клавиатуры в скрипт без создания ГУЯ для этого скрипта (то есть не так, как в всеми любимом SearchReplace.js

ну и если вдруг такой плагин/скрипт уже есть, то прошу ткнуть носом :)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

> 1) скрипт, который перемещает положение курсора с текущей позиции до позиции первого вхождение некой комбинации символов. тобеш запускаем indexOf для текста, ища заданную комбинацию при этом начало поиска указываем текущим положение курсора. ну а затем перемещаем положение курсора до найденного индекса.
Чем не подходит обычный поиск, разве это не то же самое?

> 3) скрипт, который удаляет выделенные текст.
Клавиша Del на клавиатуре.

> 4) скрипт, который добавляет текст в позицию курсора.
Метод Insert в Toolbar/Contextmenu-плагинах.

> 5) получившаяся кнопка отображается как нажатая. что я делаю не так?
Да, что-то делаете не так. Надо читать документацию или FAQ с дополнениями.

Offline
Posts: 9
Joined: Mon Aug 13, 2012 1:57 pm

Post by byakas »

VladSh wrote:> 1) скрипт, который перемещает положение курсора с текущей позиции до позиции первого вхождение некой комбинации символов. тобеш запускаем indexOf для текста, ища заданную комбинацию при этом начало поиска указываем текущим положение курсора. ну а затем перемещаем положение курсора до найденного индекса.
Чем не подходит обычный поиск, разве это не то же самое?

> 3) скрипт, который удаляет выделенные текст.
Клавиша Del на клавиатуре.

> 4) скрипт, который добавляет текст в позицию курсора.
Метод Insert в Toolbar/Contextmenu-плагинах.

> 5) получившаяся кнопка отображается как нажатая. что я делаю не так?
Да, что-то делаете не так. Надо читать документацию или FAQ с дополнениями.
эм,сарказм?тогда нехватает таблички ;)
если нет,то я в замешательстве. неужели скрит, клавиша на клавиатуре, встроенный поиск и встроенный метод это одно и тоже? Оо
речь о том,что бы написать несколько СКРИПТОВ (тех, что запускаются через плагин Scripts::main) на js, которые позволят симулировать поведение vim для навигации и редактирования.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh, человек хочет vi-подобное управление, так что вся стандартная функциональность ввода винды автоматически считается отсутвующей.
byakas, гляньте скрипт History - там есть использование горячих клавиш.
А вообще сейчас почти возможно сделать скрипт который полностью имитирует режим Vi. Сам бы сделал, да как-то я им не страдаю. Тут на виндах управление привычное, а там где есть только vi(m) - ничего кроме команды :wq мне не доводилось использовать.

Offline
Posts: 9
Joined: Mon Aug 13, 2012 1:57 pm

Post by byakas »

FeyFre благодарю, действительно правильнее былобы написать Vi a не Vim.
я признаться тоже не фанат вима, в реальной работе им никогда не пользовался. но с одной стороны мне весьма импонирует его система команд и всего что связано с быстрой навигацией и редактированием, а с другой очень бы хотелось освоить его-планирую использовать на нокии н900.

за скрипт благодарствую, сейчас поищу и гляну.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

byakas, ну в данном случае можно и vim - всё-таки AP более крутая вещь чем блокнот ;)

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

byakas
В акеле нет четкого разделения на командный и прочие режимы, глупо пытаться сделать из него vim. Средств управления у него до фига, разьве что нормальной командной строки не хватает. Можно лишь говорить о конкретной задаче типа использования его на мобильных устройствах с ущербной клавиатурой и отсутствием мыши. Причем по платформе мы ограничены виндой. А функциональность ввода разнится в зависимости от устройства(какие есть клавиши, есть ли мышеподобная хрень(джойстик, сенсор, стилус, тач...)), поэтому подход индивидуален.

скрипт, который перемещает положение курсора с текущей позиции до позиции первого вхождение некой комбинации символов.
Можно сделать скрипт, но Search, Qsearch, Replace, SearchReplace вполне управляются без мыши. Для простого поиска можно Qsearch, выделил слово, нажал назначенный хоткей и дальше каждое нажатие enter будет выделять следующий по порядку результат. Для более сложного Search так же без мыши работает. Выделил слово, нажал Ctrl+F, далее enter для перехода к следующему результату. Если нужно ввести слово поиска, тоже мышь или Tab не нужны, фокус изначально в поле ввода, ввел и enter для следующего результата. Если нет control, то переназначить вызов на иное сочетание.

скрипт, который выделяет фрагмент текста с текущей позиции курсора на указанное кол-во символов.
Нужно ли вообще вводить количество символов, если можно указать начало и конец? SelPoint.js
Если выделение большое, то считать символы долго, стрелочками перевести на конец выделения куда быстрее. Если нет стрелочек, то можно эмулировать их при запуске скрипта через буквенные клавиши.
Но вообще, удержание шифта с применением стрелочек будет намного эффективнее любого другого варианта. Если нет шифта но есть стрелочки, то стоит подумать как эмулировать удержание шифта.

скрипт, который удаляет выделенные текст, добавляет текст в позицию курсора
Для удаления можно воспользоваться Command(4156) из скрипта, тулбара или назначив эту команду на горячую клавишу. Для вставки усложнений не требуется, текст вставляется по мере написания, для переключения режима можно пользоваться Command(4190). Горячие клавиши поддерживают так же метод insert, можно назначить на клавиши более продвинутый скрипт или просто изучить его в качестве примера вставки, он маленький и понятный: Insert.js

"Color" Call("Scripts::Main", 1, "ChooseColor.js") Icon(30)
Ваша строка обращается к скриптплагину, и, соответственно, кнопка отображает его состояние. Знак минуса перед строкой позволяет игнорировать состояние, кнопка будет всегда отжата.

как осуществить ввод с клавиатуры без ГУЯ
Можно перехватывать, как FeyFre советует, можно AkelPad.InputBox.
Last edited by Visitor7 on Tue Aug 14, 2012 9:04 pm, edited 7 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

byakas wrote:эм,сарказм?тогда нехватает таблички
если нет,то я в замешательстве. неужели скрит, клавиша на клавиатуре, встроенный поиск и встроенный метод это одно и тоже? Оо
Скрипт всё равно придётся запускать по клавише или их комбинации, с тулбара или из меню. Так зачем ещё писать скрипт, если это легче можно сделать уже имеющимися возможностями, без скрипта, + работать это будет быстрее? Это какой-то новый способ извращений? ;)

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh wrote:Скрипт всё равно придётся запускать по клавише или их комбинации, с тулбара или из меню.
Есть же настройки CmdLineBegin и CmdLineEnd.
VladSh wrote:Это какой-то новый способ извращений? ;)
Не, извращение тут в том, что уже есть gVim и даже gVim Portable.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher
Я не понимаю, почему не настроить комбинации клавиш на то, что уже есть, а нужно внутри AkelPad'а работать с командной строкой + под это писать скрипты?
И как вызывать на исполнение эти команды? Тоже клавишами? Или в командной строке писать вручную?
Честно, попахивает бредом... Или это что-то неизвестное мне из серии "для удобства пользователей"?

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

Infocatcher wrote:Есть же настройки CmdLineBegin и CmdLineEnd.
Это ровным счетом ничего не меняет. Если скрипт будет один и запускаться со стартом программы, то он должен переключаться сочетанием клавиш в разные режимы - режим бездействия и режим перехвата клавиатурных событий без их возврата акелпаду. Если их будет много, то они все равно будут откуда-то запускаться.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Infocatcher
Ну так TC прямо сказал что хочет "Акел но что-бы было как vi". Я тоже в курсе gvim но советовать его тут - явно оффтоп.
Visitor7 wrote:В акеле нет четкого разделения на командный и прочие режимы, глупо пытаться сделать из него vim.
Человеческая глупость безгранична, про что говорит тот факт что даже на ГулХром сделали vimperator.
В акеле много чего нету что есть в других редакторах и очень даже не помешает. Например те же sed и awk скрипты - мощнейшая штука для редактирования(иногда проще за минуту наваять на sed сценарий из десятка команд в интерактивном режиме чем писать 10 минут скрипт). Тот же Sublime который тут не так уж и редко вспоминают. Глупо не пытаться улучшать продукт, а ещё глупее идти против инициативы делать это, особенно когда Вас лично оно не касается.
Last edited by FeyFre on Tue Aug 14, 2012 12:54 pm, edited 1 time in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre wrote:Человеческая глупость безгранична, про что говорит тот факт что даже на ГулХром сделали vimperator.
95%?
FeyFre wrote:а ещё глупее идти против инициативы делать это, особенно когда Вас лично оно не касается.
Глупее не учитывать то, куда будут вбуханы человеческие ресурсы.
Другими словами все пользователи AkelPad'а прямо заинтересованы, чтобы в первую очередь (быстрее) было реализовано то, что действительно нужно.
А такие узкоспециализорованные фичи, если они действительно нужны, могут реализовываться тем, кому это нужно. В данному случае автор темы не против реализовать это сам.

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

FeyFre
Так я ж не возражаю и тем более не мешаю. Просто между реальной разумной инициативой и заоблачными мечтаниями лежит пропасть. Это как с диапазонами. Вы хотите чтобы в акелпаде были языковые таблицы, их редактор и, соответственно, окошки выбора. Это дофига труда, который делать должны, как я понимаю, не вы. Это утяжелит акелпад. И все ради того чтобы вместо [А-ЯЁ] в окошке поиска можно было написать [А-Я]. Десяток таких усовершенствований и я просто перестану обновлять акелпад на новую версию, потому что она разрастется до невероятных размеров и потормазнеет.

Что есть акелпад, какая у него направленность? Что в нем должно быть обязательно, а что по желанию?
То что реализовано плагинами - доп функции. И автор акела врядли будет заниматься доп функциями которые лично ему не нужны. Тем более, большинство доп функций настолько узкоспециализированы, что нужны лишь единицам. А некоторые встраивать глупо, поскольку они тяжелее и сложнее чем весь акелпад в целом. Например какой-нибудь облегченный матлаб - а че, калькулятор в текстовом режиме. То же и с sed и awk. Это ж не просто еще одно окошко ввода, это целый интерпретатор взаимодействующий с редактором. Одно дело, если вы сами реализуете их ввиде плагинов независимо от того, насколько они тяжелы. Другое дело, когда просите и называете это инициативой.

Мне тоже "иногда" не хватает командной строки. Я, по вашему примеру, на половину сделал скрипт, просто узенький док внизу с парой кнопок, окошком ошибок и строкой ввода. Запуск скриптов без расширений(сначала js ищет, потом vb и тп) с параметрами. Алиасы для упрощения и наворачивания целой серии операций под одно логичное слово. Выполнение групп команд(типа command 2344;2343;4234), и так же групп вызовов плагинов. Но это "иногда" перевешивает мое желание его доделать)))

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Глупее не учитывать то, куда будут вбуханы человеческие ресурсы.
В данном случае человек сам решил вбухнуть ресурсы, а не спросил "куда". Возможно для него это не такое уж и бесполезное занятие чем для Вас. Я вот ни копейки выгоды не получил от времени потраченного на разработку и отладки плагинов и скриптов. Мне тоже не стоило вбухивать свои ресурсы?
Другими словами все пользователи AkelPad'а прямо заинтересованы, чтобы в первую очередь (быстрее) было реализовано то, что действительно нужно.
Ну чем желание ТС этому мешает? Он не отнимает время ни у автора, ни у других пользователей. Если бы я ему не ответил то это не значит что это время я потратил бы на что-то полезное для АР.
А такие узкоспециализорованные фичи, если они действительно нужны, могут реализовываться тем, кому это нужно. В данному случае автор темы не против реализовать это сам.
А что ТС кого-то заставляет делать это вместо него? Или быть может я заставляю кого-то ещё помочь ему? Эта тема никак не влияет на допиливание других фич которыми "прямо заинтересованы" "все пользователи".
Post Reply