Чи може vim автоматично відключити Capslock при поверненні до звичайного режиму?


13

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

Чи можна налаштувати vim, щоб вимкнути caplock, коли я натискаю клавішу escape, щоб увійти в звичайний режим?

Якщо є рішення, що стосуються ОС, мене цікавлять ті, що стосуються Linux.


моє "рішення" для цього полягала в тому, щоб перевстановити блокування шапки на "без дії" (macos), оскільки я не використовую його, крім помилки
localhostdotdev

Відповіді:


8

Відповіді на це запитання свідчать, що це мало ймовірно - Vim не має доступу до ОС для здійснення цього дзвінка.

Однак ви можете спробувати змінити свою поведінку, щоб Caps Lock не потрібен. Це популярний ключ для зіставлення Ctrl, Escабо Meta.

Vim пропонує gUоператору великі регістри вибору або руху, тому, можливо, ви можете ввести звичайний режим і використовувати його згодом. Також актуально: guдля малих літер та ~перемикання.

Існують також способи автоматичного заповнення, що може зменшити потребу введення тексту VERY_LONG_MACRO_NAMES.


4

Я перевстановив свій caplock на ctrl, і я рідко вже використовую caplock. Однак для vim, якщо мені колись знадобиться, у вас є tpope / vim-capslock як програмний тимчасовий капсак для вас. Якщо ви користуєтесь цим, вам слід досить легко встановити autocmd для події InsertLeaveта відключити caplock.


3

Я знайшов спосіб вимкнути блокування шапок у звичайному режимі автоматично (хоча це працює лише в Linux).

Рішення, зроблені за допомогою плагінів, не враховують, що ви можете перейти в звичайний режим більш ніж одним способом (тобто від вставки до нормального), наприклад, з командного режиму.

Насправді немає події автокоманди, яка активується після входу в звичайний режим, тому подія, яку я використав замість цього, була CursorHoldподія, яка активується, коли ви не вводите в звичайному режимі.

au CursorHold * call TurnOffCaps()
set updatetime=10

Ви встановлюєте час оновлення на дуже малу кількість, тому воно завжди активується, перш ніж ви матимете можливість набрати щось.

function TurnOffCaps()  
    let capsState = matchstr(system('xset -q'), '00: Caps Lock:\s\+\zs\(on\|off\)\ze')
    if capsState == 'on'
        silent! execute ':!xdotool key Caps_Lock'
    endif
endfunction

Я думаю, що це єдина реальна відповідь на питання. Vim потрібно якось зателефонувати в ОС, щоб якось повернути CapsLock. Звичайно, як це буде залежати від ОС.
Октавіор

2

Інший варіант полягає в перепризначити ваш CapsLockTo Esc. Це відображення, яке я використовую вже пару років: CapsLockзнаходиться в домашньому ряду, тому його дуже просто використовувати, якщо ви торкаєтесь типу. Це також сприяє правильному використанню Vim, оскільки вийти з режиму вставки набагато простіше (ключ ближче, ніж Esc).

Провести перезапис: Linux підтримує це на самому собі, для Mac OS X та Windows для цього є невеликі програми. А деякі дорогі клавіатури навіть оснащені функцією, яка дозволяє перекомпонувати клавіші.


2

На додаток до відповіді Avian Y, насправді існує автокоманда, яка активує режим виходу із вставки:

au InsertLeave * call TurnOffCaps()

Це було саме те, що я шукав ...


1

На своїй машині Apple я реально реалізував цю функцію за допомогою Karabiner , який працював досить добре. На жаль, 10.12 зламав Карабінер, і я з цього часу не намагався його реалізувати.

У мене це було, використовуючи клавішу втечі або клавішу введення, вимкнено блокування заглушок, якщо вона була включена раніше.

Тож, коли ви використовуєте macOS 10.11 або нижче, ви, безумовно, можете це зробити (хоча не вимагайте від мене налаштувань, я більше не маю їх).

Інакше я б пішов із запропонованими gU. (Незважаючи на те, що я можу зрозуміти ваші скарги, про те, що ви не можете використовувати той самий метод, який ви використовували б у будь-якому іншому текстовому редакторі)


0

У посібнику з довідки vim є досить приємне картографування, щоб скласти слово "усі літери" у режимі вставки:

inoremap <c-h> <esc>gUiw`]a

Він використовує ctrl-h, який, як правило, є клоном зворотного простору, так що ви нічого не втрачаєте за допомогою цього відображення.

Блокування Caps - це кошмар, коли ви перебуваєте у звичайному режимі! Я сподіваюся, що це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.