[vim] 삽입 모드에서 줄 처음으로 이동

다음 중 하나를 사용할 수 있다는 것을 알고 있습니다.

  1. Home 삽입 모드
  2. Esc+ i삽입 모드를 종료하고 다시 입력하여 효과적으로 줄의 시작 부분으로 이동합니다.

그러나 어느 쪽도 나를 만족시키지 않습니다. 첫 번째 경우에 나는 Home맹목적으로 칠 수 없기 때문에 머리를 기울여야 합니다. 두 번째 경우에는 왼팔이 홈 행을 떠나야 Esc하는데이 역시 성가시다.

이견있는 사람?



답변

Ctrl+ O삽입 모드에서는 키를 한 번만 누르면 명령 모드로 전환됩니다. 따라서 Ctrl+ Othen Shift+ I는 원하는 것을 달성해야합니다.


답변

I(대문자 i)를 사용하여 삽입 모드로 들어갈 수 있습니다 .

줄의 시작 부분에 커서를 놓습니다.

마찬가지로 A줄 끝에 무언가를 추가 하는 데 사용할 수 있습니다 .

그러나 이미 삽입 모드에있는 동안 이동 문제를 실제로 해결하지는 못합니다.

방금 삽입 모드에 대한 도움말을 확인했습니다. 삽입 모드에서 줄의 시작 부분으로 이동할 키 조합이 없습니다.

다른 아이디어 : 삽입 모드에서만 새 명령 다시 매핑

inoremap <C-i> <Home>


답변

Ctrl + a와 Ctrl + e가 각각 줄의 시작과 끝에 매핑되어 있습니다. 이것은 대부분의 bash 명령 줄의 동작과 일치합니다. 나를 위해 잘 작동합니다.

inoremap <C-e> <Esc>A
inoremap <C-a> <Esc>I


답변

MacOS 터미널을 사용하는 경우 기본 설정 …> 설정> 키보드로 이동하고 종료 키를 Ctrl-O $ (\ 017 $로 표시됨)에 매핑 한 다음 fn + left를 사용하여 종료 키를 시뮬레이션합니다. 홈 키에 대해서도 동일하게 수행하십시오. 탈출 시퀀스 \ 033 [H는 집에서도 작동합니다.


답변

가장 좋은 방법은 작업을 다른 키 에 다시 매핑하는 것 입니다 (아이디어 를 보려면 <Ctrl-Home>을 다시 매핑하여 파일의 첫 번째 줄로 이동하는 방법? 참조)

이 “기능”을 얼마나 자주 사용하는지 생각하고이를 키 입력에 적절하게 매핑합니다.


답변

다음과 같이 키를 매핑 할 수 있습니다.

inoremap II <Esc>I

참조 : http://vim.wikia.com/wiki/Quick_command_in_insert_mode


답변

저에게 효과가 있었던 지름길 (근육 기억과 직관성 모두)은 “현재 줄의 시작 부분에 삽입” 에 매핑 __(double _)하는 것입니다.

이론적 해석:

  • _ 이미 줄의 시작으로 이동
  • vim에서 무엇이든 두 배로 늘리는 것은 “이 라인까지”하는 매우 일반적인 방법입니다.
  • double _은 어떤 동작과도 충돌하지 않습니다 (이미 줄의 시작 부분에 있습니다).
  • 줄의 시작 부분으로 이동하여 이제 삽입하려는 경우 손이 이미 올바른 위치에 있습니다.

vimscript :

"insert at start of current line by typing in __ (two underscores)
function DoubleUnderscore()
    if v:count == 0 && getcurpos()[2] == 1
        :silent call feedkeys('I', 'n')
    else
        :silent call feedkeys('^', v:count + 'n')
    endif
endfunction
nnoremap <silent> _ :call DoubleUnderscore()<CR>

쉬운 대안 있기 때문에이 복잡 nnoremap __ _I원인 눌러에 지연 정력 _구별 _하고 __.