Vimで、カーソルを行内の非空白文字の先頭に移動する方法はありますか?たとえば、カーソルを下の2行目の「S」に移動するにはどうすればよいですか?
1行目 2行目
問題がある場合は、主にMacVimを使用しますが、コンソールからも実行できるようにしたいと考えています。
ありがとう!
私が正しく理解している場合-:h ^
から:
^ To the first non-blank character of the line.
|exclusive| motion.
(空白文字かどうかに関係なく、最初に移動する0
とは対照的です)
^
を押す代わりに、_
(アンダースコア)を押すと、カーソルが置かれている行の最初の空白以外の文字にジャンプできます。
+
および-
は、次の/前の行の最初の空白以外の文字にジャンプします。
(これらのコマンドはコマンドモードでのみ機能し、挿入モードでは機能しません。)
また、おそらく有用です:+と-は、それぞれカーソルを上または下に移動して、最初の非空白文字に移動します。
以下は.vimrcによる抜粋です^[[1~
はctrl+v
とHome
を押すと作成されます
"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の答えを拡張して、この動作に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
0キーを^に再マップするだけです
〜/ .vimrcを編集します
set visualbell t_vb=
map 0 ^