回答:
私はこれを行うための組み込みの方法を知りませんが、あなたは簡単にそれを行うためのマップを持つことができます:
nnoremap µ :exe 'normal! '.(virtcol('$')/2).'\|'<cr>
@Ingo Karkatは、VISUALモードでも機能する次のバリアントを提案しました。
noremap <expr> gM (virtcol('$') / 2) . '<Bar>'
残念ながら、SELECTモードでもトリガーされます。結果として、私はカップルを好む:
nnoremap <expr> gM (virtcol('$') / 2) . '<Bar>'
xnoremap <expr> gM (virtcol('$') / 2) . '<Bar>'
noremap <expr> gM (virtcol('$') / 2) . '<Bar>'
ビルトインgm
はまさにこれを行います。
M
スクリーンを想定しました。
:set virtualedit=all
ます。
Lucの答えに加えて、Easymotionプラグインもあります。これにより、特定の位置にすばやく移動できます。押す<Leader><Leader>w
と、特定の単語に移動するために押すことができるキーが強調表示されます。そうすれば、現在の行の途中にある単語に簡単に移動できます。
テキストの中央に移動したい場合(行頭の空白を考慮しないで)、これは機能します:
function! s:Gm()
execute 'normal! ^'
let first_col = virtcol('.')
execute 'normal! g_'
let last_col = virtcol('.')
execute 'normal! ' . (first_col + last_col) / 2 . '|'
endfunction
nnoremap <silent> gm :call <SID>Gm()<CR>
ただし、これはビジュアルモードでは機能しないと思います。
gM
カーソルを行のテキストの半分に移動します:https :
//vimhelp.org/motion.txt.html#gM
これは2019年10月に実装されました:https : //github.com/manuelschiller/vim/commit/a267c57acdd8843a91eed2cede6ef02d970147fd