Как определить Caps Lock в функции Vimrc

При редактировании кода в Vim я часто использую Caps Lock, когда пишу ВСЕ ЗАГЛАВНЫМИ буквами. Тем не менее, я часто забываю отключить блокировку заглавных букв, когда закончу с заглавной частью. Это вызывает бесконечную боль (поскольку, т. Е. J перемещается вниз, но J присоединяется к текущей строке со строкой ниже).

Обычно, когда я выхожу из режима вставки, я хочу отключить регистр Caps Lock. Как я могу добавить что-нибудь в свой .vimrc, чтобы он отключал блокировку заглавных букв при выходе из режима вставки? В качестве альтернативы, как я могу добавить что-то в свой .vimrc, чтобы он предупреждал меня (строка состояния? Звуковой сигнал? Любое предупреждение в порядке), если у меня включена блокировка заглавных букв при выходе из режима вставки?

Спасибо!


person Sam King    schedule 10.05.2012    source источник
comment
Вы можете использовать autocmd InsertLeave для выполнения действия при выходе из режима вставки, но я не думаю, что есть способ включить / выключить ограничения из vim, поскольку это ключ-модификатор (хотя вы можете сделать это в зависимости от ОС) .   -  person Benj    schedule 10.05.2012
comment
Почему бы вам не взять за привычку печатать как обычно и затем изменить регистр текста?   -  person romainl    schedule 10.05.2012
comment
Это поможет.   -  person Pavan Manjunath    schedule 10.05.2012
comment
я бы тоже рекомендовал использовать, например, nnoremap <C-u> gUiw и inoremap <C-u> <esc>gUiwea для прописных отдельных слов; Кроме того, я использую плагин autocomplpop, поэтому любое слово, которое я уже набрал, предлагается в том виде, в котором я его набрал.   -  person epsilonhalbe    schedule 10.05.2012
comment
@epsilonhalbe (+ romainl): Да, у меня есть что-то похожее, но я все же считаю использование Caps Lock более удобным и быстрым, если не считать проблемы, описанной здесь.   -  person Sam King    schedule 11.05.2012
comment
@Pavan Manjunath: Ссылка, которую вы предоставили, похоже, предлагает переназначить клавишу Caps Lock. Правильно ли я предполагаю, что это помешает мне использовать Caps Lock в других приложениях без изменений? Я надеюсь, что не буду придерживаться другой мысленной карты того, как использовать вещи в разных контекстах, если этого можно избежать.   -  person Sam King    schedule 11.05.2012
comment
Мне тоже нужна была такая функциональность, пока я не осознал, насколько просто использовать прописные буквы в Vim. Мой ответ на проблему? Просто не используйте caps-lock и используйте такие вещи, как gU + движение или vi"U (для заглавных букв внутри кавычек), чтобы выполнить задание после ввода его в нижнем регистре.   -  person Jeff B    schedule 20.08.2015


Ответы (1)


Как и все другие приложения, Vim / GVIM располагается поверх абстракций терминала / оконного менеджера и, следовательно, не имеет прямого доступа к базовым необработанным функциям клавиатуры. Таким образом, получение информации о Caps Lock потребует беспорядочных и специфичных для платформы хакерских атак.

Вместо этого я бы посоветовал вам использовать функции Vim для «имитации» Caps Lock в Vim, поскольку в этом случае нет упомянутых вами проблем. Прочтите статью Caps Lock только в режиме вставки, в которой это подробно объясняется.

person Ingo Karkat    schedule 10.05.2012
comment
Спасибо! В этой статье предлагается использовать альтернативную раскладку клавиш (ctrl + ^) для вызова эмуляции Caps Lock. Есть ли способ сделать это с помощью самого ключа Caps Lock (без переназначения его на другой ключ на уровне ОС, что предположительно помешало бы ему работать в других приложениях)? - person Sam King; 11.05.2012
comment
@Sam: В Windows вы можете выборочно переназначить клавишу Caps Lock только тогда, когда Vim активен через скрипт AutoHotkey. Но многие упорные пользователи Vim будут утверждать, что этот ключ слишком ценен для первоначального использования, и скорее сопоставят его либо с Ctrl, либо с Esc (я делаю последнее). В вики-странице Vim Tips Wiki есть еще одна статья о том, как это сделать. - person Ingo Karkat; 11.05.2012
comment
В этом есть смысл - я делал подобные вещи, используя AHK в прошлом. Что-нибудь подобное в Linux вам известно? - person Sam King; 12.05.2012
comment
можно ли изменить комбинацию Ctrl + ^ на активный Caps Lock в режиме вставки? Для меня Shift + Shift будет иметь больше смысла - person asa; 12.05.2021
comment
@AfonsoSchulzAlbrecht: Вы можете переназначить это: :inoremap <F1> <C-^>. Shift + Shift не будет работать по той же причине, что и в моем ответе на Caps Lock: это должно быть что-то, что видит Vim, а просто клавиши-модификаторы (Shift, Ctrl и т. Д.) Вообще не дойдут до Vim. - person Ingo Karkat; 13.05.2021