Bagaimana saya bisa bergerak maju X byte, mulai dari lokasi kursor saat ini (termasuk jeda baris)?
[count]go
dapat digunakan untuk bergerak maju X byte dari awal buffer. Saya mencoba Shift + V, G, [count]go
(dengan asumsi bahwa [count]go
akan mulai menghitung dari awal pilihan saya), tetapi sayangnya itu tidak berhasil karena go
hanya mulai menghitung dari awal buffer.
Saya juga mencoba :set rulerformat=%o
menampilkan byte byte saat ini (seperti yang disarankan oleh Jumping ke byte byte, dan menampilkan posisi sebagai byte offset ), menambahkan angka di kepala saya dan akhirnya dikeluarkan [count]go
. Ini berfungsi, tetapi tidak terlalu praktis ...
cursor-movement
binary-file
Rob W
sumber
sumber
Xl
(di manaX
jumlah karakter) atau jumlah karakter diikuti oleh panah kanan.Jawaban:
Pencarian ini bergerak 40 karakter (bukan byte, meskipun) maju:
dengan mencari tepat 40 karakter (
\{40}
) dalam bentuk apa pun, termasuk baris baru (\_.
), dan menempatkan kursor di akhir pencarian (/e
). Lihat: http://vimregex.com/#Non-Greedy ,:help search-offset
dan:help \_
Juga, lihat
:h 23.4
untuk pengeditan biner.Pembaruan: Berdasarkan jawaban ini , inilah fungsi yang melompat ke byte offset:
Dapat digunakan seperti ini:
atau mengetik pemetaan keyboard yang dipetakan, dengan hitungan:
Jika Anda tidak menggunakan hitungan, nomor hitungan sebelumnya digunakan kembali. Jadi Anda dapat melakukan:
40CTRL-C CTRL-C CTRL-C 30CTRL-C CTRL-C
untuk melompat 40, 40, 40, 30, 30 byte dll.Tekan
Ctrl-O
untuk melompat kembali (lihat komentar di dalam fungsi).sumber
[count]go
proses meskipun dalam fungsi vim (baca offset byte saat ini, tambahkan angka yang diinginkan, digo
sana).[count]go
dan metode Anda: 1)[count]go
menambahkan item ke daftar lompatan, jadi saya bisa gunakanCtrl+O
untuk dengan cepat melompat kembali ke posisi saya sebelumnya. 2)[count]go
dapat digunakan tanpa:
, apakah mungkin untuk memperkenalkan yang baru[count]GO
yang melakukan hal Anda. Bisakah Anda mengedit jawaban Anda yang juga cocok dengan perilaku itugo
?Saya akhirnya menggunakan solusi berikut, yang mengimplementasikan logika dari pertanyaan saya.
[count]GO
untuk[count]
memajukan byte.[count]Go
untuk memindahkan[count]
byte ke belakang.Tambahkan ini ke Anda
.vimrc
:Terima kasih kepada VanLaser untuk implementasi awalnya, yang menempatkan saya ke arah yang benar.
sumber