Saya menggunakan contoh kode javascript:
1 var a = 1;
2 var b = |{};
Kursor berada pada posisi |
(pada karakter "{" ketika bentuk kursor adalah blok), saya mengetahui bahwa saya ingin a
diberi objek, jadi saya ingin memodifikasinya seperti di bawah ini:
1 var a = {};
Jadi saya ingin tahu ketika kursor ada di "{", bagaimana cara cepat menghapus semua konten sebelum "{" sampai kosong setelah tanda "=" pada baris 1?
Di editor normal lainnya, saya hanya akan menekan tombol backspace untuk menghapus kode. Tapi saya tidak bisa mencapainya dalam vim.
insert-mode
normal-mode
Aaron Shen
sumber
sumber
i
dan menggunakan tombol backspace. Tidak ada tubuh yang akan menembak Anda untuk itu. Kupikir.eol
maka backspace akan menghapus jeda baris. Anda juga harusstart
dimasukkan dalam pengaturan. (Lihat:help backspace
). Jangan gunakan metode ini! Ada beberapa metode yang jauh lebih cepat yang diperinci dalam jawaban di bawah ini.Jawaban:
Tidak yakin apakah saya benar-benar mengerti pertanyaannya, tetapi jika Anda ingin menghapus sampai Anda punya
var a = {};
, Anda bisa, dari posisi kursor, gunakand?1Enterdmembutuhkan gerakan, dan Anda dapat memberikannya pola pencarian dengan /untuk pencarian maju atau ?untuk pencarian mundur.
Berikut adalah gif kecil yang menunjukkan ini:
sumber
Enter
setelah mengetikd?1
.Jika Anda menggunakan vim (dan bukan vi klasik), maka dalam contoh Anda, Anda bisa melakukannya
vkd
(atauvkx
).v
akan memasukkannya ke mode 'visual' (pilih)k
akan naik satu baris untuk meletakkan kursor pada '1', memilih bagian yang ingin Anda hapusd
ataux
akan menghapus pilihansumber
Hapus Atas
Untuk contoh khusus ini,
dgk
adalah salah satu cara tercepat untuk melakukannya.The
d
perintah, seperti Akshay menjelaskan , dapat diikuti oleh mosi, menghapus semua karakter antara mana kursor dimulai, dan di mana gerak membawanya ke.Dalam kode Anda, Anda ingin menghapus segala sesuatu antara posisi kursor dan kolom yang sama satu baris lebih jauh, sehingga memindahkan kursor ke atas dengan
gk
gerakan (yang bila digunakan dengan operator adalah non-linewise) akan mencapai tujuan Anda.EDIT: BobH menunjukkan dalam komentar bahwa metode ini hanya berfungsi ketika
'wrap'
diatur. Dengan demikian, kecuali jika Anda selalu memiliki set bungkus, Anda mungkin lebih baik menggunakandvk
atauvkd
, seperti yang disarankan oleh jawaban lain di halaman ini.Hapus Kata Mundur
Anda juga dapat menggunakan:
d5b
ataud4B
, yang masing-masing akan menghapus 5 kata atau 4 KATA mundur. (1;
adalah satu KATA, tetapi dua kata biasa).sumber
vim -u NONE -U NONE
dan menghapus kedua baris.gk
sebagai karakter yang tampaknya membutuhkan:set wrap
(agak samar). Saya tidak tahu mengapa ini tampaknya bekerja untuk semua orang, tetapi tidak untuk saya, ketika bantuan untukgk
hal itu tampaknya menyiratkan itu harus bekerja. Satu-satunya petunjuk adalah bahwa makna utamagk
berkaitan dengan garis yang dibungkus. Setelah saya mencoba pengaturan bungkus (seperti iseng), voila, itu berhasil.Saya belum bisa berkomentar, jadi saya perlu membuat jawaban baru. Kunci yang d kdiberikan oleh Rich tidak bekerja untuk saya bahkan ketika menggunakan opsi nocompatible. Alasannya mungkin karena gerakan kdianggap secara garis lurus oleh vim, dalam hal ini kedua baris dihapus. Dari
:help d
:Ini juga menunjukkan obatnya: Gunakan dvkuntuk memaksa gerakan untuk menjadi karakter-bijaksana. Ini berguna bagi saya.
Saya tidak tahu o_v sebelumnya, jadi di sini
:help o_v
:sumber