İmlecimi geçerli satırın ortasına getirebilmemin bir yolu var mı? (metin satırının ortası - ekran genişliğinin ortası değil)
Mİmleci ekranın ortasına taşıyan kısayolun olup olmadığını merak ediyordum .
EDIT : Parantez içine açıklama eklendi
İmlecimi geçerli satırın ortasına getirebilmemin bir yolu var mı? (metin satırının ortası - ekran genişliğinin ortası değil)
Mİmleci ekranın ortasına taşıyan kısayolun olup olmadığını merak ediyordum .
EDIT : Parantez içine açıklama eklendi
Yanıtlar:
Bunu yapmanın yerleşik bir yolunu bilmiyorum, ancak bunu yapmak için kolayca bir haritanız olabilir:
nnoremap µ :exe 'normal! '.(virtcol('$')/2).'\|'<cr>
@Ingo Karkat, VISUAL modunda da çalışan aşağıdaki varyantı önerdi.
noremap <expr> gM (virtcol('$') / 2) . '<Bar>'
Ne yazık ki SELECT modunda da tetikleniyor. Sonuç olarak, çifti tercih ederim:
nnoremap <expr> gM (virtcol('$') / 2) . '<Bar>'
xnoremap <expr> gM (virtcol('$') / 2) . '<Bar>'
noremap <expr> gM (virtcol('$') / 2) . '<Bar>'
Yerleşik gm
aynen bunu yapar.
M
Ben benzetmeye göre , ekran varsaydım.
:set virtualedit=all
.
Luc'un cevabına eklemek için, hızlı bir şekilde belirli bir konuma geçmeyi bir esinti yapan Easymotion eklentisi de var . <Leader><Leader>w
Tuşuna basıldığında , belirli bir kelimeye gitmek için hangi tuşa basabileceğiniz vurgulanır. Bu şekilde, mevcut satırın ortasındaki bir kelimeye kolayca geçebilirsiniz.
Metnin ortasına gitmek istiyorsanız (satırın başındaki boşluk dikkate alınmazsa), bu işe yarayacaktır:
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>
Ancak bunun görsel modda çalışacağını düşünmüyorum.
gM
imleci satır metninin yarısına taşır:
https://vimhelp.org/motion.txt.html#gM
Bu Ekim 2019'da uygulanmıştır: https://github.com/manuelschiller/vim/commit/a267c57acdd8843a91eed2cede6ef02d970147fd