меню вставляемых фрагментов

и другие vi-подобные редакторы

Модератор: /dev/random

Аватара пользователя
SilentOS
Сообщения: 251
Статус: Важный воевода
ОС: SuSE

меню вставляемых фрагментов

Сообщение SilentOS »

Нужна такая функциональность:
обычное меню в GUI, в котором можно было при клике получить в режиме вставки различные фрагменты кода. Этих фрагментов будет много, поэтому привязка горячих клавиш не нужна.
Как можно это реализовать?
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: меню вставляемых фрагментов

Сообщение ZyX »

SilentOS писал(а):
09.09.2009 11:57
Нужна такая функциональность:
обычное меню в GUI, в котором можно было при клике получить в режиме вставки различные фрагменты кода. Этих фрагментов будет много, поэтому привязка горячих клавиш не нужна.
Как можно это реализовать?

Насчёт меню в GUI не знаю, но можно сделать так: по клавиатурному сочетанию
запоминается текущее состояние (буфер, позиция в буфере), затем в текущем окне
открывается новый буфер (так как он выполняет роль меню, то в нём отключается
modifiable), в буфере на каждой строке либо сами фрагменты кода, либо их
названия. Для буфера назначено сочетание, в первом случае копирующее текущую
строку, закрываующее буфер, восстанавливающее состояние и вставляющее код. Во
втором случае при открытии буфер заполняется из списка списков первыми
значениями списка второго уровня (списка соответствий название — код), при
нажатии сочетания определяется номер строки, запоминается второе значение из
списка второго уровня, буфер закрывается, состояние восстанавливается,
полученное значение вставляется. Думаю, идея понятна.
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: меню вставляемых фрагментов

Сообщение Luinnar »

SilentOS писал(а):
09.09.2009 11:57
Нужна такая функциональность:
обычное меню в GUI, в котором можно было при клике получить в режиме вставки различные фрагменты кода. Этих фрагментов будет много, поэтому привязка горячих клавиш не нужна.
Как можно это реализовать?

Вот пример добавления меню "Encoding" с тремя пунктами:

Код: Выделить всё

menu Encoding.windows-1251 :e! ++enc=cp1251<CR>
menu Encoding.koi8-r       :e! ++enc=koi8-r<CR>
menu Encoding.utf-8        :e! ++enc=utf-8<CR>


По аналогии можете сделать менюшку для ваших целей.
Например для вставки слова "test" через меню "Codes" нужно добавить следующей код в .vimrc:

Код: Выделить всё

menu Codes.test atest<ESC>

или только для режима вставки:

Код: Выделить всё

imenu Codes.test test
Спасибо сказали:
Аватара пользователя
SilentOS
Сообщения: 251
Статус: Важный воевода
ОС: SuSE

Re: меню вставляемых фрагментов

Сообщение SilentOS »

Luinnar писал(а):
09.09.2009 18:06
По аналогии можете сделать менюшку для ваших целей.
Например для вставки слова "test" через меню "Codes" нужно добавить следующей код в .vimrc:

Спасибо, с вставкой кусков кода все получилось :)

UPD. И еще, изучая этот замечательный редактор, столкнулся с конкретным торможением gvim в документах с числом строк больше 800. Это его нормальное поведение, или ему что-то "мешает" ? Консольный vim на том же документе просто летает.
Спасибо сказали: