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


83

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

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

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

이견있는 사람?


5
0을 사용하여 줄의 시작으로 이동할 수 있지만 삽입 모드는 아닙니다.
manku

3
당신은 야후까지도에로 발견하면, 당신은 CTRL-을 사용할 수 있습니다 [대신 :)

3
또는 Ctrl-C는 Esc처럼 작동합니다. 또는 더 좋은 방법은 Caps Lock을 Esc에 매핑하는 것입니다.
Eric Wilson

4
당신은 그의 질문 = P 대답하지 않았다으로 @manku 당신은 너무 자신의 질문에 대답하지 않았다
PUK

JJ에 다시 매핑 ESC 당신은 정력에 모드를 많이 이동해야
카필

답변:


149

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


Ctrl + c, I 또는 Ctrl + [, I을 눌러 동일한 작업을 수행 할 수 있습니다. Ctrl + c는 기능적으로 ESC와 유사하고 Ctrl + [는 ESC와 동일합니다.
sml

42
또는 Ctrl-o다음 0(약간 더 효율적으로보다 Ctrl-o뒤에 Shift-I), 당신이 삽입 모드에서 돌아올 것이다으로 자동. 어떤 경우에는 Ctrl-o다음에 오는 ^것이 더 좋을 수 있습니다 (줄의 공백이 아닌 첫 번째 문자로 이동).
Jeet

2
Alt 키가 이스케이프를 전송하면 삽입 모드에서 Alt-A 또는 Alt-I를 사용할 수 있습니다 (iTerm2에서 구성 가능)
Rivenfall

2
<C-O>같지 <C-[>않거나 <Esc>비슷해 보일 수 있습니다. 차이점은 일반 이스케이프 + <삽입 모드로 다시 들어가기위한 것>로 편집하면 두 번의 편집이 남고 <CO>는 하나만 남습니다. 이렇게하면 더 깔끔한 실행 취소 기록을 유지하고 해당 삽입물을 다시 붙여 붙여 넣을 수 있습니다. 일부 Vim'ers는 그런 것에주의를 기울여야한다고 주장합니다.
Nicolai S

이해가 안 돼요. Linux 및 Mac OSX 모두에서 ctrl + O가 작동하지 않습니다. 하지만 ESCAPE 키를 누르면 명령 모드로 이동 한 다음 Shift + I 작동합니다.
Donato 2016

51

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

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

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

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

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

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

inoremap <C-i> <Home>


1
T. <kbd> I </ kbd>는 잘 작동하지만 이미 삽입 모드에있는 동안 줄의 시작으로 이동하는 솔루션을 찾고 있습니다.
Valentin Vasilyev

이것은 질문에 직접 대답하지 않지만 대부분의 사람들에게 질문을 선점하는 기능을 제공합니다.
Joe Coder

24

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

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

내가 착각하지 않는다면 이것들은 대부분의 다른 편집자들에게도 키 바인딩입니다. 이것을 vimrc 파일에 추가 할 것입니다.
아론

2
이것은 일반적인 Emacs 동작입니다. 대부분의 브라우저는 다양한 유형의 텍스트 필드에서도이를 지원합니다. 나는 이것이 나쁜 생각이라고 생각하지 않지만 여기에 당신이 놓치고있는 것이 있습니다 : <C-e>커서 아래의 문자를 복사 / 쓰기 ( <C-y>커서 위에 있음), <C-a>삽입하십시오 .- 레지스터 (점 레지스터). 해당 레지스터는 삽입 모드를 종료 할 때 방금 입력 한 내용으로 채워집니다 (Ctrl-c를 사용하는 경우에도 (여러 이유로 익숙해 져서는 안 됨)).
Nicolai S

@Jonathan Cutrell 새 줄의 시작 부분으로 어떻게 이동합니까?
sayth

3

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


1
fn-Left 및 fn-Right는 Mac 터미널의 vim에서 기본적으로 작동합니다
Jeff



0

저에게 효과가 있었던 지름길 (근육 기억과 직관성 모두)은 "현재 줄의 시작 부분에 삽입" 에 매핑 __(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원인 눌러에 지연 정력 _구별 _하고 __.



0

이 명령을 사용하여 삽입 모드를 종료하지 않고 줄 끝으로 이동합니다.

inoremap jl <esc><S-a>

마찬가지로 줄 시작으로 이동하는 방법은 다음과 같습니다.

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