Vim은 화살표 키없이 삽입 모드에서 커서를 한 문자 이동


9

이것은 너무 선외로 보일지 모르지만 vim으로 전환했으며 이제 워크 플로에 매우 만족합니다. 알파벳 키를 항상 손에 대는 것은 글을 쓸 때 큰 일이므로 화살표 키를 사용하지 말라고 스스로 훈련하려고 노력합니다. 따라서 탐색해야 할 때 삽입 모드에서 벗어나 일반 모드로 이동하고 삽입 모드로 돌아갑니다.

이것이 실제로 더 혼란스러운 예외가 있습니다 clang complete. 스 니펫과 함께 사용 하면 super tab좋습니다. 매개 변수를 채운 후 자동 완성 기능을 얻을 때마다 커서를 남겨두고 )계속하려면 커서를 한 문자 오른쪽으로 이동해야합니다. 당신이 상상할 수 있듯이 이것은 매우 자주 발생합니다 .

내가 가진 유일한 옵션은 : Escla또는입니다 . 그리고 나는 그들 중 어느 것에도 만족하지 않습니다. 첫 번째는 간단한 1 문자 커서 이동을 위해 3 개의 키를 누르게하고 두 번째는 내 손을 화살표 키로 이동시킵니다. 세 번째 옵션은에 매핑 CTRL-L하거나 smth를 사용하는 것 입니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?


//snippets (clang complete + supertab):
foo($`param1`, $`param2`)

//after completion:
foo(var1, var2|)
              ^ ^
              | |
     I am here  |
                 Need to be here

| 커서 위치를 나타냅니다


비슷한 문제로 )함수에 적어도 하나의 인수가있는 경우 닫히는 것을 막기 위해 완료 스크립트를 해킹했습니다 . 손으로 직접 입력합니다. 훨씬 더 유용합니다.
Dmitry Frank

입력 )하면 실제로 삽입하지 않고 건너 뜁니다. (저는이 플러그인을 사용하지 않습니다)
FDinoff

@FDinoff 아니오, 그냥 다른 것을 삽입합니다)
bolov

1
@bolov는 실망합니다. auto-pairs 에서 코드를 추출 할 수 있습니다 . 플러그인이 충돌하는지 모릅니다. 다른 옵션은 <C-O>l1 개의 일반 모드 명령에 대해 일반 모드를 종료하는 데 사용 하는 것입니다.
FDinoff

답변:


5

)기존 )괄호 인 경우 기존을 건너 뛰는 맵

inoremap <expr> )  strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"

출처 : http://vim.wikia.com/wiki/Automatically_append_closing_characters


기존 답변

:h i_CTRL-O 하나의 명령을 실행하고 삽입 모드로 돌아갑니다.

Ctrl-ol 오른쪽으로 한 문자 이동 한 다음 삽입 모드로 돌아갑니다.

또는 일부 대괄호 플러그인을 사용하면 닫는 대괄호 만 입력 )하면 기존 대괄호 가 무시됩니다.


1
)행의 마지막 문자 인 경우에는 작동하지 않습니다 (코드를 작성할 때 자주 발생 함). CTRL-O a그러나 작동합니다. 그래서 우리는 하나의 키를 저장했다고 생각합니다. :)
bolov

True del )는 두 문자이며 닫는 괄호 뒤에 항상 표시됩니다.
Brett Y

')'를 건너 뛰는 것은 매력처럼 작동합니다. 감사합니다
bolov

1

삽입 모드에서 사용되는 제어 키를 찾으려면 다음을 입력하십시오.

:help insert-index

ctrl-b는 사용되지 않지만 다른 키를 희생하고 싶을 수도 있습니다.

imap <c-b> <right>

커서를 한 문자 오른쪽으로 이동합니다. 또는 이중 문자를 매핑하십시오.

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