Vim의 줄에서 공백이 아닌 문자의 시작으로 커서를 이동


48

Vim에서 줄에서 공백이 아닌 문자의 시작 부분으로 커서를 이동하는 방법이 있습니까? 예를 들어, 아래 두 번째 줄에서 커서를 "S"로 이동하려면 어떻게해야합니까?

첫 줄
    두 번째 줄

중요한 경우, 나는 주로 MacVim을 사용하지만 콘솔 에서이 작업을 수행하고 싶습니다.

감사!

답변:


57

내가 올바르게 이해한다면 :h ^:

^ To the first non-blank character of the line.
  |exclusive| motion.

(와 달리 0공백에 관계없이 시작 부분으로 이동)


1
0댓글 에 +1
Roy Truelove 2012 년

46

를 누르는 대신 (밑줄)을 ^눌러 _커서가있는 줄과 같은 줄에서 공백이 아닌 첫 번째 문자로 이동할 수 있습니다.

+-이전 / 다음 줄에 공백이 아닌 첫 번째 문자로 이동합니다.

(이러한 명령은 삽입 모드가 아닌 명령 모드에서만 작동합니다.)


8

+와-는 커서를 공백이 아닌 첫 번째 문자로 각각 위나 아래로 이동합니다.


4

아래의 .vimrc 의해에서 니펫
^[[1~눌러 생성 ctrl+vHome

"jump to first non-whitespace on line, jump to begining of line if already at first non-whitespace
map <Home> :call LineHome()<CR>:echo<CR>
imap <Home> <C-R>=LineHome()<CR>
map ^[[1~ :call LineHome()<CR>:echo<CR>
imap ^[[1~ <C-R>=LineHome()<CR>
function! LineHome()
  let x = col('.')
  execute "normal ^"
  if x == col('.')
    execute "normal 0"
  endif
  return ""
endfunction

고마워, 이것이 내가 찾던 것입니다. 이 동작은 요즘 편집자 (Atom / VSCode / Sublime)에서 일반적으로 사용되며 익숙해졌습니다.
YoYoYonnY

0

Andrew Sohn의 답변을 확장 하여이 동작에 0을 사용하려면 다음과 같이 감싸십시오.

function! LineHome()
  let x = col('.')
  execute "normal ^"
  if x == col('.')
    unmap 0
    execute "normal 0"
    map 0 :call LineHome()<CR>:echo<CR>
  endif
  return ""
endfunction 

-1

방금 0 키를 ^에 다시 매핑합니다.

~ / .vimrc 편집

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