Przesuń kursor na początek znaków niebiałych w linii w Vimie

49

Czy w Vimie istnieje sposób na przesunięcie kursora na początek znaków niebiałych w linii? Na przykład, jak mogę przesunąć kursor do „S” w drugim wierszu poniżej?

Pierwsza linia
    Druga linia

Jeśli to ma znaczenie, używam głównie MacVima, ale chciałbym również móc to zrobić z konsoli.

Dzięki!

Joe Mornin
źródło

Odpowiedzi:

58

Jeśli dobrze rozumiem - z :h ^:

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

(w przeciwieństwie do 0, co prowadzi do początku, niezależnie od białych znaków lub nie)

slhck
źródło
1
+1 do 0komentarza
Roy Truelove
47

Zamiast naciskać ^można nacisnąć klawisz _(podkreślenie), aby przejść do pierwszego niebiałego znaku w tym samym wierszu, w którym znajduje się kursor.

+i -przeskocz do pierwszego niebiałego znaku w następnym / poprzednim wierszu.

(Te polecenia działają tylko w trybie poleceń, a nie w trybie wstawiania).

Ben
źródło
8

Przydatne również: + i - przesuną kursor odpowiednio w górę lub w dół, do pierwszego niepustego znaku.

jared
źródło
4

poniżej znajduje się fragment z .vimrc
^[[1~jest tworzony przez naciśnięcie ctrl+viHome

"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
Andrew Sohn
źródło
Dzięki, tego szukałem. Takie zachowanie jest obecnie powszechne w edytorach (Atom / VSCode / Sublime, żeby wymienić tylko kilka) i przyzwyczaiłem się do tego ...
YoYoYonnY
0

Rozwijając odpowiedź Andrew Sohna, jeśli chcesz użyć 0 dla tego zachowania, po prostu zawiń ją w następujący sposób:

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 
użytkownik2448373
źródło
-1

Po prostu ponownie przypisuję klucz 0 do ^

Edytuj swój ~ / .vimrc

set visualbell t_vb=
map 0 ^
Sunding Wei
źródło