일반 모드로 돌아갈 때 vim이 Capslock을 자동으로 끌 수 있습니까?


13

거의 모자에 무언가를 입력 할 때마다 일반 모드로 돌아올 때 Capslock을 끄는 것을 잊어 버립니다. 그런 다음 커서를 움직여서 여러 줄과 내가 일어나지 않을 것으로 예상되는 다른 많은 것들을 결합하려고 시도합니다.

escape를 눌러 일반 모드로 들어갈 때 capslock을 끄도록 vim을 구성 할 수 있습니까?

OS 관련 솔루션이 있다면 Linux에 적용 할 수있는 솔루션에 관심이 있습니다.


이 내 "솔루션"캡 "아니오 조치"나는 실수로 제외하고는 사용하지 않는 (맥 OS)에 고정 매핑하는 것이 었습니다
localhostdotdev

답변:


8

에 대한 응답 이 질문은 그 가능성이 아니라고 표시 - 빔이 그 전화를 만들기 위해 OS에 액세스 할 수 없습니다.

그러나 Caps Lock이 필요하지 않도록 동작을 변경할 수 있습니다. 그것은에 매핑하는 인기 열쇠 Ctrl, Esc또는 Meta.

Vim은 gU오퍼레이터에게 선택 또는 동작을 대문자로 지정할 수 있으므로 정상적으로 입력하고 나중에 사용할 수 있습니다. 또한 관련성 : gu소문자와 ~토글.

자동 완성하는 방법도 있으므로 입력의 필요성을 줄일 수 있습니다 VERY_LONG_MACRO_NAMES.


4

Capslock을 다시 Ctrl 키로 다시 매핑했으며 더 이상 Capslock을 거의 사용하지 않습니다. 그러나 vim의 경우 필요한 경우 소프트웨어 임시 capslock으로 tpope / vim- capslock이 있습니다. 이것을 사용하면 이벤트에 대한 autocmd를 설정하고 InsertLeavecapslock을 비활성화 하는 것이 매우 쉽습니다 .


3

일반 모드에서 caps lock을 자동으로 끄는 방법을 찾았습니다 (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을 켜려면 OS를 호출해야합니다. 물론 그 방법은 OS에 따라 다릅니다.
Octaviour

2

또 다른 옵션은 다시 매핑하는 것입니다 CapsLock에를 Esc. 이것은 몇 년 동안 사용 해 온 매핑 CapsLock입니다. 홈 행에 있으므로 입력을 터치하면 사용하기가 정말 쉽습니다. 또한 인서트 모드를 벗어나는 것이 훨씬 쉬우므로 (키가보다 가까이 있음 Esc) 적절한 Vim 사용을 촉진합니다 .

다시 매핑하기 쉽습니다. Linux는 기본적으로이 기능을 지원합니다. Mac OS X 및 Windows에서이를 수행 할 수있는 작은 앱이 있습니다. 또한 일부 비싼 키보드에는 키를 다시 매핑 할 수있는 기능이 있습니다.


2

Avian Y 답변 외에도 실제로 삽입 모드를 떠나는 자동 명령이 있습니다.

au InsertLeave * call TurnOffCaps()

그것은 내가 찾던 것과 정확히 일치했습니다 ...


1

내 Apple 컴퓨터에서 실제로 Karabiner를 사용 하여이 기능을 구현 했는데 합리적으로 잘 작동했습니다. 불행히도 10.12는 Karabiner를 망가 뜨렸으므로 그 이후로는 구현하지 않았습니다.

이전에 활성화 된 경우 이스케이프 키 또는 엔터 키 비활성화 캡 잠금을 사용하여 그렇게했습니다.

따라서 10.11 이하에서 macOS를 사용하는 경우 확실히 할 수 있습니다 (설정을 요구하지는 않지만 더 이상 설정이 없습니다).

그렇지 않으면 제안과 함께 갈 것입니다 gU. (다른 텍스트 편집기에서 사용하는 것과 동일한 방법을 사용할 수 없다는 불만은 이해할 수 있지만)


0

vim help manual에는 삽입 모드에서 단어를 모두 대문자로 만드는 매우 좋은 매핑이 있습니다.

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

그것은 사용하는 ctrl-h당신이 정말이 매핑 아무것도 잃고하지 않는, 그래서 일반적으로 단지 백 스페이스 클론이다.

일반 모드에있을 때 Caps Lock은 악몽입니다! 도움이 되길 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.