Pergi ke tengah baris di vim


14

Saya tahu 0 pergi ke awal baris dan $ pergi ke akhir, tetapi apakah ada sesuatu untuk tengah?

Jawaban:


11
:call cursor(0, len(getline('.'))/2)

4
Ini akan sangat berguna jika dipetakan, misalnya:: nnoremap gm: kursor panggilan (0, len (getline ('.')) / 2) <cr>
Heptite

3
virtcol ('$') / 2 sudah cukup.
Luc Hermitte

@Luc Hermitte: Bagus, tapi bukan perilaku terbaik saat tab keras terlibat.
ephemient

Itu sebabnya saya menggunakan virtcol bukan col. :) Tapi memang kita harus menggunakan | dan bukan kursor (). BTW, len () tidak akan memberikan hasil yang lebih baik. Selain itu, len akan memberikan masalah lain dengan karakter multi-byte.
Luc Hermitte

8

Mengetik gmakan melakukannya, tetapi bergerak menurut garis layar (lihat :help gm). Untuk membuatnya bekerja dengan baris teks, seseorang dapat memetakan ulang perintah ini:

map gm :call cursor(0, virtcol('$')/2)<CR>

gm tampaknya memindahkan kursor ke tengah layar, tetapi jika baris teks saya lebih pendek dari panjang layar, itu tidak membawa saya ke tengah. Maaf karena tidak menjelaskan.
Teggy

@eggy: Begitu. Saya memodifikasi solusi saya untuk memetakan kembali gm untuk pergi ke tengah baris teks. Seperti yang Anda lihat, ini menggabungkan solusi dari ephemient dan Luc Hermitte.
Bersenang

Seperti yang ditunjukkan oleh ephemient, itu masih memiliki masalah dengan tarbal keras sebagai kursor () menghitungnya masing-masing sebagai satu karakter. Selain itu, tidak akan berfungsi dengan karakter multi-byte juga.
Luc Hermitte

7

Berikut adalah solusi yang akan menghargai hardtab, dan karakter multi-byte juga.

:exe 'normal '.(virtcol('$')/2).'|'

1

Inilah solusi terbaik yang saya temukan. Melompat tepat ke tengah garis tidak terlalu praktis. Anda kemungkinan besar masih perlu menggerakkan kursor beberapa posisi setelah pindah ke tengah. Bagaimana jika Anda bisa melompat ke karakter tertentu? Banyak orang hanya mencari karakter, lalu tekan "berikutnya" sampai mereka mencapainya. Ini lambat. Plugin Easy-motion menawarkan solusi yang lebih baik.

Favorit saya adalah <leader><leader>skarakter yang ingin Anda lompati. Easy Motion menggantikan semua kecocokan dengan huruf berbeda untuk Anda pilih. Lihat tutorialnya. Ini adalah plugin yang mengubah hidup ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.