Kursor saya ada di tengah paragraf ketika tiba-tiba saya memutuskan untuk menyalin paragraf itu:
Jadi saya ketik vip
untuk memilih paragraf secara visual:
Sekarang saya menekan cmd+C
untuk menyalin ke clipboard (ini mungkin bervariasi pada sistem Anda, tetapi seharusnya tidak relevan dengan pertanyaan utama posting saya), yang meninggalkan kursor saya di awal paragraf:
daripada posisi yang diinginkan, di situlah saya mulai.
Perhatikan masalah yang sama terjadi ketika menarik pilihan dengan non-visual yip
.
Saya ingin perilaku default menjadi "kembali ke posisi kursor asli" setelah melakukan tindakan seleksi / salin seperti ini. Apakah ada konfigurasi yang memungkinkan ini terjadi?
vimscript
vimrc
cursor-movement
Jonah
sumber
sumber
mm "+yap `m
(Perhatikan bahwa"+y
menarik ke clipboard sistem Anda)Jawaban:
Solusi yang mungkin adalah dengan menggunakan lompatan:
Sebelum menarik atau memilih secara visual, Anda dapat mengatur lompatan baru yang dapat Anda akses setelah kursor bergerak. Untuk melakukannya gunakan m`.
Kemudian setelah kursor Anda bergerak karena penggunaan mencabut ctrlountuk melompat kembali dalam daftar melompat. Anda juga dapat melihat daftar lompatan yang tersedia dengan
:jumps
dan menavigasi daftar ini dengan ctrlodanctrliSingkatnya alur kerja Anda adalah:
Seperti menggunakan m` set tanda, Anda dapat melompat ke sana dengan ``bukan ctrlo.
Anda dapat membaca
:h mark-motions
dan:h :jumps
untuk informasi lebih lanjut.sumber
<leader>'
untuk menjadi`
, yang bekerja cukup baik untuk saya. (Saya gunakan<space>
sebagai pemimpin saya.):h 'langmap'
. Saya tidak mengatakan itu solusi ideal tapi mungkin itu bisa menarik untuk Anda.noremap ' `
noremap ` '
... Ini ada di vimrc saya dan berfungsi dengan baikAnda dapat menghindari memindahkan kursor dengan:
Lihat
:help range
,:help mark-motions
, dan:help :y
.sumber
:nmap <key> :'{,'}y<CR>
harus melakukan pekerjaan itu.Jika Anda baru saja mengeditnya, solusi paling sederhana adalah mengetikkan g ;yang akan memposisikan kursor Anda pada posisi edit terakhir.
Dan jika Anda belum mengedit paragraf, Anda bisa melakukan operasi penggantian sederhana dengan karakter yang sama dengan yang Anda gunakan (misalnya Anda aktif
h
, Anda mengetikrh
) untuk memicu "acara" edit tanpa benar-benar mengedit apa pun.sumber
'.
, tetapi bisa sangat berguna untuk menavigasi antara perubahan terakhir dengang;
dang,
.g;
yang membawa Anda ke posisi kolom yang benar juga?The Plugin vim-easyclip memiliki pengaturan untuk ini:
Agak banyak bagi saya untuk menginstal seluruh plugin hanya untuk fitur kecil ini, jadi saya lebih suka menggunakan tanda sesuai komentar saya.
sumber
Memperluas jawaban Al.G., kita dapat pergi ke lokasi yang diperlukan tanpa mengedit. Solusinya adalah gi. Kami akan mencapai ke posisi yang sama di mana kami berada dalam mode insert terakhir sebelumnya.
Jika kita ingin memulai atau mengakhiri teks yang disorot.
Ketika Anda menarik teks yang disorot, Anda juga akan kembali ke mode normal dan Anda mungkin atau mungkin tidak mempertahankan posisi kursor asli.
Kembali ke lokasi semula setelah menarik:
gv untuk mendapatkan sorotan sebelumnya.
Sekarang Anda dapat beralih antara lokasi asli dan saat ini dalam mode visual dengan tombol
oatau O.
Baris dan nomor kolom dari baris status akan membantu untuk mengetahui posisi kursor yang tepat.
Dokumentasi:
sumber
vip
ketika kursor dimulai di tengah paragraf.vip
memeriksa edit saya.