2014-10-31 2 views
0

Есть ли способ определить, удерживается ли кнопка нажатой, например. упр. Я просмотрел несколько многообещающих тем справки и не нашел ответа.Определить статус кнопки вверх/вниз в Vim/Vimscript

Причина в том, что, когда вы входите в функцию VimScript, я хочу остаться в пределах определенного цикла, пока ctrl удерживается и выйдет после его освобождения.

+0

Это невозможно. AFAIK: клавиша Ctrl не распознается Vim как фактический ключ, поэтому он не может сказать, нажата ли она или нет. Как насчет того, что вам нужно? – romainl

ответ

1

Запрос ключевого состояния отдельных (модификаторов) ключей будет работать только в GVIM, а не в терминале (поскольку это только посылает полные полные нажатия клавиш). Поскольку Vim поддерживает согласованность с функциями только GUI (cp. :help design-not), это невозможно, и не будет.

Если вы действительно отчаянно нуждаетесь в этой функции, вы можете реализовать это в собственном коде, загруженном в Vim через библиотеку DLL/shared и libcall(). Но я бы рекомендовал скорее пересмотреть свой подход; есть, конечно, другой способ.

+0

Почему нормальное '' отображение не работает? –

+0

Я открыт для альтернативы. Я надеялся сделать что-то вроде функций Alt-Tab или Ctrl-Tab для переключения между буферами или вкладками [link] (http://vimrcfu.com/snippet/103). Нажав один раз и отпустив переключатели на буфер/вкладку MRU, нажав один раз, удерживая Ctrl, мигнет дальше по истории MRU. Я пробовал много способов навигации между буферами и вкладками, как родными, так и плагинами, но это поведение в Windows является повсеместным и полезным, и я привык. Может быть, после ctrl-tab в функцию, оставайтесь в цикле, пока следующий нажатие клавиши не Tab? Что использовать для чтения следующего ключа? – traycerb

+0

Извините, не заметил, что мои правки не сэкономили (5 минут окна). У меня уже есть [скрипт для использования ctrl-tab] (http://vimrcfu.com/snippet/103), но я хотел бы воспроизвести поведение, чтобы углубиться в историю MRU. Трудно перегрузить поведение ctrl-tab (как немедленный переход на MRU, так и глубже), не отмечая статус нажатия клавиши. Я думаю, что у меня есть альтернатива, чтобы оставаться в цикле, пока следующий нажатие не будет вкладом. Пока нажата только вкладка, пойдите глубже в список MRU. Каким будет лучший способ прочитать следующий нажатие клавиши? – traycerb

Смежные вопросы