Bagaimana Anda indentasi> <tanpa meninggalkan mode visual dan kehilangan pilihan Anda saat ini?

16

Saya sering harus indentasi secara manual, tetapi ketika saya memasuki mode visual, pilih baris saya untuk indentasi, dan tekan <atau >, saya meninggalkan mode visual apakah saya mau atau tidak.

Saya lebih suka memilikinya jadi saya tetap dalam mode visual, dan menjaga posisi seleksi dan kursor saya tetap utuh.

Bagaimana saya bisa mencapai ini?

Akiva
sumber
1
Apakah ada kemungkinan pemetaan ulang akan berhasil? Sesuatu seperti :vmap < <a?
Feffe

Jawaban:

19

Saya memiliki ini di vimrc saya:

"keep visual mode after indent
vnoremap > >gv
vnoremap < <gv

Perhatikan bahwa Anda juga bisa menggunakan .(titik) untuk mengulangi tindakan indentasi terakhir.

VanLaser
sumber
Hampir sempurna, simpan kursor saya tidak bergerak dengan baris.
Akiva
1
@Akiva Mungkin Anda ingin menambahkan ^di akhir pemetaan itu? yaitu >gv^?
Martin Tournoij
2
Kursor tampaknya bergerak (atau tidak) tergantung pada posisinya sehubungan dengan teks yang berlekuk. Tidak jelas bagi saya di mana Anda ingin kursor tetap: pada nomor kolom yang sama, atau pada karakter yang sama? Juga, Anda tahu bahwa Anda masih dapat memindahkan kursor misalnya dengan j, k, ldll sementara di modus visual?
VanLaser
2
Jujur, saya hanya menempatkan <Right>Dan <Left>mengikuti perintah, dan itu berfungsi dengan baik.
Akiva
9

Saya tahu ini bukan solusi otomatis, tetapi Anda dapat melakukannya dengan menggunakan gvsetelah indentasi visual.

Ini akan masuk ke mode visual dengan pilihan sebelumnya dipilih, dan kursor Anda di baris terakhir. Lihat :h gvuntuk info lebih lanjut.

Tumbler41
sumber
-2

Saya mencoba menambahkan pemetaan berikut ke vimrc saya:

vmap < <a
vmap > >a

Tampaknya memiliki hasil yang menarik, mungkin itu yang Anda cari?

Feffe
sumber