一部の vimscript ハッカーではおそらく可能G
ですが、ファイルの末尾に移動しgg
たり、ファイルの先頭に移動し1G
たり<C-Home>
するなどの動きで効率的になる方がはるかに普遍的です。同様に$
、行末と0
行頭、または^
最初の空白以外の文字についても同様です。
を設定することもでき:help whichwrap
ます。これは、行末を超えて移動するときに次の行に移動するキー、または行頭を超えて移動するときに前の行に移動するキーを指定します。それ以外は、あなたが求めている機能が組み込まれているとは思いません。いくつかのvimscriptでそれを行うことができますが、h、j、k、およびlを関数に再マッピングし、それらが行/ファイルの最後/最初にあるかどうかを処理する必要があります. 私には、それはやり過ぎでかなり面倒に思えます。
そうは言っても、もしあなたがしなければならないなら...
nnoremap j :call CheckJ()<cr>
nnoremap k :call CheckK()<cr>
nnoremap h :call CheckH()<cr>
nnoremap l :call CheckL()<cr>
fun! CheckJ()
if line('.') == line('$')
norm! gg
else
norm! j
endif
endfun
fun! CheckK()
if line('.') == 1
norm! G
else
norm! k
endif
endfun
fun! CheckH()
if col('.') == 1
norm! $
else
norm! h
endif
endfun
fun! CheckL()
if col('.') == (col('$') - 1)
norm! 0
else
norm! l
endif
endfun