Bagaimana cara saya berurusan dengan garis yang sangat panjang dalam teks (500+ karakter)?


19

Untuk beberapa format teks, pemecah baris penting.

Sebagai contoh, saya sering menggunakan Vim untuk menulis dokumen MediaWiki, di mana Anda tidak bisa hanya meletakkan linebreak di mana saja (tidak seperti Markdown). Jadi saya terpaksa menulis baris dengan banyak karakter.

Ini dapat mengarah ke garis panjang (200+ karakter) atau bahkan sangat panjang (1000+ karakter). Saya menemukan ini sangat canggung untuk digunakan dalam Vim. Salah satu contoh adalah jika saya ingin mengedit sesuatu di tengah-tengah 1000 karakter-baris, saya perlu memindahkan kursor saya 500 kali.

Ini bisa dibuat sedikit lebih cepat dengan watau /, tetapi masih canggung.

Apakah ada cara yang lebih baik untuk menghadapinya? Kunci gerakan yang lebih baik? Semacam "pembungkus palsu" (teks berperilaku seolah-olah tw=80, tetapi tidak ada \ndalam file), atau sesuatu yang lain?


1
Anda juga mungkin ingin juga mengatur display = lastline untuk menghindari baris @ kosong di akhir layar.
Random832

Jawaban:


21

Anda dapat menggunakan gserangkaian perintah untuk pindah ke batas area layar yang terlihat. Misalnya, g$bergerak ke tepi kanan layar (yang belum tentu merupakan akhir dari garis). gjmemindahkan kursor ke bawah satu baris seperti yang muncul di layar Anda (yang tidak harus satu baris logis ke bawah).

Mungkin Anda dapat memutar ulang tombol panah:

nnoremap <Up> gk
nnoremap <Down> gj

Atau beberapa orang juga langsung memberontak kdan j:

nnoremap k gk
nnoremap j gj

Untuk mode penyisipan, Anda dapat menggunakan:

inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj

Atau:

inoremap <Up> <C-o>gk
inoremap <Down> <C-o>gj

Selain itu, jika Anda menggunakan :set wrap, Vim akan membungkus garis, sehingga Anda dapat melihat semua baris. Anda juga dapat menggunakan set showsbreak=+untuk menunjukkan +untuk menunjukkan bahwa Vim melakukan pembungkus.


Untuk melompat ke posisi kolom tertentu, Anda dapat menggunakan |perintah. Misalnya, 200|akan masuk ke posisi kolom 200.


1
... dan g5jmelompat 5 ke bawah, seperti biasa.
yo '

1
@yo 'Saya pikir maksud Anda5gj
Martin Tournoij

1
@Carpetsmoker Strange; dengan sebagian besar perintah, tidak masalah urutan apa yang Anda berikan awalan dan angka, selama perintah itu sendiri adalah yang terakhir. Ini dia tidak: - /
yo '

@yo ', well, in g5j, g5terlihat pertama, yang hanya melompat ke yang berikutnya 5sebelum Anda menerapkan j. Itu sebabnya tidak bisa melakukan apa 5gj.
Shahbaz

3

Vim memiliki dukungan untuk pembungkusan lunak, hanya set wrapuntuk mengaktifkannya dan itu akan membungkus garis panjang melampaui layar yang terlihat. Anda dapat menggunakan gj& gkuntuk bergerak naik / turun masing-masing di atas garis yang dibungkus tersebut.


2

Ketika saya berurusan dengan garis yang sangat panjang, titik nyeri terbesar berkaitan dengan panjang garis yang berbeda. Yaitu, bergerak ke atas atau ke bawah di dekat ujung garis menggulung jendela sangat jauh ke kiri atau kanan.

Ini dapat dihindari dengan pengaturan virtualedit=all, yang memungkinkan Anda untuk memindahkan kursor ke ruang jauh setelah garis berakhir.


1

Seperti yang orang lain katakan, Anda dapat menggunakan g+ sesuatu untuk bergerak. Namun, ketika Anda memiliki garis yang sangat panjang, menekan gjbeberapa kali untuk bergerak ke bawah tidak ergonomis. Saya memiliki yang berikut ini .vimrcuntuk menjadikannya lebih mudah:

vmap <D-j> gj
vmap <D-k> gk
vmap <D-4> g$
vmap <D-6> g^
vmap <D-0> g^
nmap <D-j> gj
nmap <D-k> gk
nmap <D-4> g$
nmap <D-6> g^
nmap <D-0> g^

Pada Mac, ini memungkinkan saya untuk menggunakan j, k, $, 0 dan ^ pada baris tampilan dengan menahan tombol perintah. Di sistem lain, alih-alih DAnda bisa mencoba Matau Auntuk Alt, atau Cuntuk Kontrol.

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.