AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

akelpad * vim
Goto page 1, 2  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  

Нужен ли способ навигации/редактирования, подобный ВИМовскому в АкелПаде?
Лишним не будет
33%
 33%  [ 3 ]
Не нужен
66%
 66%  [ 6 ]
Total Votes : 9

Author Message
byakas



Joined: 13 Aug 2012
Posts: 9

PostPosted: Mon Aug 13, 2012 2:19 pm    Post subject: akelpad * vim Reply with quote

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

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

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

получившаяся кнопка отображается как нажатая. что я делаю не так?

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

ну и если вдруг такой плагин/скрипт уже есть, то прошу ткнуть носом Smile
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Mon Aug 13, 2012 3:02 pm    Post subject: Reply with quote

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

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

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

> 5) получившаяся кнопка отображается как нажатая. что я делаю не так?
Да, что-то делаете не так. Надо читать документацию или FAQ с дополнениями.
Back to top
View user's profile Send private message Visit poster's website
byakas



Joined: 13 Aug 2012
Posts: 9

PostPosted: Mon Aug 13, 2012 4:21 pm    Post subject: Reply with quote

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

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

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

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


эм,сарказм?тогда нехватает таблички Wink
если нет,то я в замешательстве. неужели скрит, клавиша на клавиатуре, встроенный поиск и встроенный метод это одно и тоже? Оо
речь о том,что бы написать несколько СКРИПТОВ (тех, что запускаются через плагин Scripts::main) на js, которые позволят симулировать поведение vim для навигации и редактирования.
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2041
Location: Vinnitsa, Ukraine

PostPosted: Mon Aug 13, 2012 6:25 pm    Post subject: Reply with quote

VladSh, человек хочет vi-подобное управление, так что вся стандартная функциональность ввода винды автоматически считается отсутвующей.
byakas, гляньте скрипт History - там есть использование горячих клавиш.
А вообще сейчас почти возможно сделать скрипт который полностью имитирует режим Vi. Сам бы сделал, да как-то я им не страдаю. Тут на виндах управление привычное, а там где есть только vi(m) - ничего кроме команды :wq мне не доводилось использовать.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
byakas



Joined: 13 Aug 2012
Posts: 9

PostPosted: Mon Aug 13, 2012 8:33 pm    Post subject: Reply with quote

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

за скрипт благодарствую, сейчас поищу и гляну.
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2041
Location: Vinnitsa, Ukraine

PostPosted: Mon Aug 13, 2012 9:09 pm    Post subject: Reply with quote

byakas, ну в данном случае можно и vim - всё-таки AP более крутая вещь чем блокнот Wink
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Tue Aug 14, 2012 10:20 am    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Tue Aug 14, 2012 11:00 am    Post subject: Reply with quote

byakas wrote:
эм,сарказм?тогда нехватает таблички
если нет,то я в замешательстве. неужели скрит, клавиша на клавиатуре, встроенный поиск и встроенный метод это одно и тоже? Оо
Скрипт всё равно придётся запускать по клавише или их комбинации, с тулбара или из меню. Так зачем ещё писать скрипт, если это легче можно сделать уже имеющимися возможностями, без скрипта, + работать это будет быстрее? Это какой-то новый способ извращений? Wink
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1619

PostPosted: Tue Aug 14, 2012 11:03 am    Post subject: Reply with quote

VladSh wrote:
Скрипт всё равно придётся запускать по клавише или их комбинации, с тулбара или из меню.
Есть же настройки CmdLineBegin и CmdLineEnd.

VladSh wrote:
Это какой-то новый способ извращений? Wink
Не, извращение тут в том, что уже есть gVim и даже gVim Portable.
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Tue Aug 14, 2012 11:12 am    Post subject: Reply with quote

Infocatcher
Я не понимаю, почему не настроить комбинации клавиш на то, что уже есть, а нужно внутри AkelPad'а работать с командной строкой + под это писать скрипты?
И как вызывать на исполнение эти команды? Тоже клавишами? Или в командной строке писать вручную?
Честно, попахивает бредом... Или это что-то неизвестное мне из серии "для удобства пользователей"?
Back to top
View user's profile Send private message Visit poster's website
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Tue Aug 14, 2012 11:32 am    Post subject: Reply with quote

Infocatcher wrote:
Есть же настройки CmdLineBegin и CmdLineEnd.
Это ровным счетом ничего не меняет. Если скрипт будет один и запускаться со стартом программы, то он должен переключаться сочетанием клавиш в разные режимы - режим бездействия и режим перехвата клавиатурных событий без их возврата акелпаду. Если их будет много, то они все равно будут откуда-то запускаться.
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2041
Location: Vinnitsa, Ukraine

PostPosted: Tue Aug 14, 2012 11:40 am    Post subject: Reply with quote

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
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Tue Aug 14, 2012 12:39 pm    Post subject: Reply with quote

FeyFre wrote:
Человеческая глупость безгранична, про что говорит тот факт что даже на ГулХром сделали vimperator.
95%?

FeyFre wrote:
а ещё глупее идти против инициативы делать это, особенно когда Вас лично оно не касается.
Глупее не учитывать то, куда будут вбуханы человеческие ресурсы.
Другими словами все пользователи AkelPad'а прямо заинтересованы, чтобы в первую очередь (быстрее) было реализовано то, что действительно нужно.
А такие узкоспециализорованные фичи, если они действительно нужны, могут реализовываться тем, кому это нужно. В данному случае автор темы не против реализовать это сам.
Back to top
View user's profile Send private message Visit poster's website
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Tue Aug 14, 2012 1:00 pm    Post subject: Reply with quote

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

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

Мне тоже "иногда" не хватает командной строки. Я, по вашему примеру, на половину сделал скрипт, просто узенький док внизу с парой кнопок, окошком ошибок и строкой ввода. Запуск скриптов без расширений(сначала js ищет, потом vb и тп) с параметрами. Алиасы для упрощения и наворачивания целой серии операций под одно логичное слово. Выполнение групп команд(типа command 2344;2343;4234), и так же групп вызовов плагинов. Но это "иногда" перевешивает мое желание его доделать)))
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2041
Location: Vinnitsa, Ukraine

PostPosted: Tue Aug 14, 2012 1:07 pm    Post subject: Reply with quote

Quote:
Глупее не учитывать то, куда будут вбуханы человеческие ресурсы.
В данном случае человек сам решил вбухнуть ресурсы, а не спросил "куда". Возможно для него это не такое уж и бесполезное занятие чем для Вас. Я вот ни копейки выгоды не получил от времени потраченного на разработку и отладки плагинов и скриптов. Мне тоже не стоило вбухивать свои ресурсы?
Quote:
Другими словами все пользователи AkelPad'а прямо заинтересованы, чтобы в первую очередь (быстрее) было реализовано то, что действительно нужно.
Ну чем желание ТС этому мешает? Он не отнимает время ни у автора, ни у других пользователей. Если бы я ему не ответил то это не значит что это время я потратил бы на что-то полезное для АР.
Quote:
А такие узкоспециализорованные фичи, если они действительно нужны, могут реализовываться тем, кому это нужно. В данному случае автор темы не против реализовать это сам.
А что ТС кого-то заставляет делать это вместо него? Или быть может я заставляю кого-то ещё помочь ему? Эта тема никак не влияет на допиливание других фич которыми "прямо заинтересованы" "все пользователи".
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group