Bagaimana saya bisa menarik (menyalin) satu karakter tempat kursor diletakkan?

49

Saya tahu banyak cara untuk menyalin sesuatu:

yiw= menarik di kata saat ini
yaw= menarik semua kata (termasuk spasi tambahan)
yy = menarik baris saat ini
3yy= menarik tiga baris mulai dari yang sekarang
yap= menarik semua paragraf (termasuk mengikuti baris baru)

Saya juga dapat menghapus atau mengubah satu karakter:

x= hapus karakter di bawah kursor
r= ganti karakter di bawah kursor

Tetapi bagaimana di dunia Anda hanya menyalin satu karakter di bawah kursor?

Motivasi saya adalah saya sedang memprogram di Perl 6 dan beberapa operator adalah karakter Unicode. Saat ini saya menggunakan Perl 6 Config :: INI kode tadzik sebagai titik awal untuk parser kustom, misalnya, dan saya ingin menyalin satu karakter kutipan Prancis (operator hiper) dari baris ini :

my %hash = $<sections>».ast;

Saya bisa menggunakan versi dua karakter "Texas" dari operator hiper >>, tapi saya pikir itu terlihat lebih baik dan kurang ambigu daripada >>>:

my %hash = $<sections>>>.ast;

masukkan deskripsi gambar di sini
masukkan deskripsi gambar di sini

Christopher Bottoms
sumber
1
Dengan mudah, buat operasi dengan gerakan, seperti biasa:yl
VanLaser
@ VanLaser Ide bagus! Saya berpikir bahwa gerakan tidak akan berhasil karena saya hanya menginginkan satu karakter itu. Tapi saran Anda sangat bagus untuk ASCII. Posting itu sebagai jawaban dan saya akan memilihnya. Menariknya itu tidak bekerja dengan karakter Unicode ini, tetapi ytX(" yank til X") tampaknya berfungsi ketika Xkarakter tepat di sebelah kanan.
Christopher Bottoms
Saya bertanya-tanya, apakah itu satu karakter, baik itu Unicode, atau tidak ada dua karakter, disembunyikan / diganti menggunakan concealfitur Vim ?
VanLaser
@ VanLaser Sepertinya dua "karakter".
Christopher Bottoms
BTW, bagaimana Anda memperkenalkan »karakter?
VanLaser

Jawaban:

41

Menyusun operasi yank dengan begitu sering digunakan "satu karakter ke kanan" gerakan harus bekerja: yl.

BTW (untuk mengomentari komentar OP), bagi saya »dapat disentak dengan cara ini, di gVim atau terminal Vim. Mungkin masalah pengkodean (file)?

VanLaser
sumber
4
Yanking juga »bekerja dengan baik untukku. Saya gunakan vyuntuk menarik satu karakter. Tidak yakin mengapa saya menggunakan itu daripada yl, mungkin saya punya alasan sadar sekali tapi sekarang itu hanya refleks.
jjaderberg
3
Saya selalu selesai y<space>berpikir itu menyentak karakter di bawah kursor, dan saya akan menambahkannya sebagai jawaban tetapi setelah memeriksa bantuan saya menyadari <space>dan ladalah hal yang sama.
Brett Y
Itu bagus, dan tampaknya lebih mudah dipukul, kecuali mungkin ketika ruang digunakan sebagai pemimpin.
VanLaser
1
@ jjaderberg Saya suka komentar Anda, silakan posting sebagai jawaban. Terima kasih!
Christopher Bottoms
1
@brettanomyces Saya suka komentar Anda, silakan posting sebagai jawaban. Terima kasih!
Christopher Bottoms
14

Biasanya saya tekan vy( visual yank ), kadang-kadang xu( delete undo ) juga. Juga, jika Anda ingin menarik arang sebelum kursor Anda, alih-alih lvy, Anda dapat menekan Xu, saya pikir itulah alasan mengapa saya menekan xuuntuk saat ini. :-)

Perhatikan bahwa, Xuakan membuat kursor Anda bergerak ke char itu.

Kent
sumber
Maksudmu hvy. Saya mencoba mengeditnya, tetapi ternyata mengoreksi satu karakter dalam perintah vim bukanlah perubahan yang signifikan untuk dapat diterima.
Shahbaz
9

Cara paling sederhana yang saya tahu untuk melakukan ini adalah menggunakan xuntuk menghapus karakter, yang juga meletakkannya di buffer, dan kemudian Pmemasukkannya kembali. Anda kemudian dapat memindahkan kursor dan menempelkan karakter kembali ke mana pun Anda inginkan dengan p(setelah kursor) atau P(sebelum kursor), selama Anda tidak mengubah buffer.

BruceK
sumber