Cara menghapus teks yang dipilih di editor vi

116

Saya menggunakan PuTTY dan editor vi. Jika saya memilih lima baris menggunakan mouse saya dan saya ingin menghapus baris tersebut, bagaimana cara melakukannya?

Juga, bagaimana saya bisa memilih garis menggunakan keyboard saya seperti yang saya bisa di Windows di mana saya menekan Shiftdan menggerakkan panah untuk memilih teks? Bagaimana saya bisa melakukannya di vi?

Peter Mortensen
sumber
1
Saya memiliki daftar orang yang dicetak tetapi tidak dapat menemukan cara menghapus teks yang dipilih
x Hapus karakter di sebelah kanan kursor X Hapus karakter di sebelah kiri kursor D Hapus di akhir baris dd Hapus baris saat ini: d Hapus baris saat ini dari lagmonster.org/docs/vi.html harap sedikit membantu
Mawg mengatakan memulihkan Monica
1
Pertanyaan VIM tentang superuser? LOL!
Pascal Thivent
1
@Pascal: hmm, ya, kamu benar. Jawaban yang diformat dengan baik, omong-omong. Oh, dan pertanyaannya bukan tentang VIM, tapi tentang VI. ;)
Marcel Korpel

Jawaban:

215

Saya menggunakan PuTTY dan editor vi. Jika saya memilih lima baris menggunakan mouse saya dan saya ingin menghapus baris tersebut, bagaimana cara melakukannya?

Lupakan mouse. Untuk menghapus 5 baris, baik:

  • Pergi ke baris pertama dan ketik d5d( ddhapus satu baris, d5dhapus 5 baris) ~ atau ~
  • Ketik Shift-vuntuk masuk mode seleksi linewise , kemudian memindahkan kursor ke bawah menggunakan j(ya, penggunaan h, j, kdan luntuk bergerak ke kiri , bawah , atas , kanan masing-masing, itu jauh lebih efisien daripada menggunakan panah) dan ketik duntuk menghapus seleksi.

Juga, bagaimana saya bisa memilih garis menggunakan keyboard saya seperti yang saya bisa di Windows di mana saya menekan Shiftdan menggerakkan panah untuk memilih teks? Bagaimana saya bisa melakukannya di vi?

Seperti yang saya katakan, baik gunakan Shift-vuntuk masuk ke mode pemilihan garis atau vuntuk masuk ke mode pemilihan karakter atau Ctrl-vuntuk masuk ke mode pemilihan blok. Kemudian bergerak dengan h, j, kdan l.

Saya sarankan untuk menghabiskan waktu dengan Vim Tutor (lari vimtutor) untuk lebih mengenal Vim dengan cara yang sangat didaktik.

Lihat juga

Pascal Thivent
sumber
1
Sebenarnya, vim memiliki dukungan mouse yang bagus jika terminal Anda mendukungnya. Misalnya menggunakan gpmdaemon di konsol, atau menjalankan xtermatau konsoledalam lingkungan grafis, Anda dapat memberi tahu vim set mouse=a(atau menambahkannya ke .vimrc Anda) dan mouse dapat digunakan untuk memilih, mengubah ukuran split, dll.
Ben Voigt
@ Ben Anda benar, saya tidak menggunakan mouse sama sekali tetapi ini tidak berarti VIM tidak dapat menghadapinya (dalam keadaan tertentu). Saya sebenarnya menghapus bagian yang tidak akurat ini dari jawaban saya saat Anda mengetik.
Pascal Thivent
Juga, sangat sulit untuk mengetahui kapan V Anda adalah kapital atau bukan ... Saya sarankan untuk mengatakan [Shift] + [V] untuk pemilihan mode garis.
Ben Voigt
Aku tahu itu sudah lama, tapi mengapa menggunakan h, j, kdan lakan jauh lebih efisien daripada menggunakan panah? Saya tidak melihat masalah dengan menggunakan panah dan hasil akhirnya terlihat sama. Juga, panah pertama kali dirancang untuk tujuan itu, jadi pengaturannya terasa jauh lebih intuitif (setidaknya bagi saya)
Frederico Pantuzza
1
@FredericoPantuzza Ini adalah soal pergerakan lengan pada saat itu - tujuannya adalah untuk menjaga jari-jari Anda pada tombol baris rumah setiap saat. Harus mengangkat lengan kanan Anda dan menggesernya ke tombol panah untuk menggunakannya seiring waktu.
AndrewF
59

Lakukan dengan cara vi.

Untuk menghapus 5 baris tekan: 5dd(5 hapus)

Untuk memilih (sebenarnya menyalinnya ke clipboard) Anda mengetik: 10yy

Agak sulit untuk dipahami, tetapi sangat berguna untuk dipelajari saat menggunakan terminal jarak jauh tersebut

Perhatikan kurva pembelajaran untuk beberapa editor:


(sumber: calver di unix.rulez.org )

OscarRyz
sumber
31

Jika Anda ingin menghapus menggunakan nomor baris, Anda dapat menggunakan:

:startingline, last line d

Contoh:

:7,20 d

Contoh ini akan menghapus baris 7 hingga 20.

Vladimir verleg
sumber
Saya belum mengetahui tip ini sejauh ini. Ini bekerja seperti pesona! Terima kasih!
Tung
13

Menyoroti dengan mouse Anda hanya menyoroti karakter di terminal. VI tidak benar-benar mendapatkan informasi ini, jadi Anda harus menyorotnya secara berbeda.

Tekan 'v' untuk masuk ke mode pilih, dan gunakan tombol panah untuk memindahkannya. Untuk menghapus, tekan x. Untuk memilih garis sekaligus, tekan shift + v. Untuk memilih blok, coba ctrl + v. Itu bagus untuk, katakanlah, menyisipkan banyak baris komentar di depan kode Anda :).

Saya baik-baik saja dengan VI, tapi butuh beberapa saat untuk meningkat. Rekan kerja saya merekomendasikan saya lembar contekan ini . Saya menyimpan cetakannya di dinding untuk saat-saat aneh ketika saya melupakan sesuatu.

Selamat meretas!

heymatthew
sumber
6

Saat menggunakan terminal seperti PuTTY , biasanya klik mouse dan pilihan tidak dikirim ke sistem jarak jauh. Jadi, vi tidak tahu bahwa Anda baru saja memilih beberapa teks. (Ada pengecualian untuk ini, tetapi secara umum tindakan mouse tidak dikirimkan.)

Untuk menghapus beberapa baris di vi, gunakan sesuatu seperti 5dduntuk menghapus 5 baris.

Jika Anda tidak menggunakan Vim , saya sangat menyarankan untuk melakukannya. Anda dapat menggunakan pemilihan visual, di mana Anda menekan Vuntuk memulai blok visual, memindahkan kursor ke ujung yang lain, dan menekan duntuk menghapus (atau perintah pengeditan lainnya, seperti yuntuk menyalin).

Greg Hewgill
sumber
1
@Justin L .: Gunakan <kbd>a</kbd>.
Greg Hewgill
1
Terima kasih! : D Apakah ada lagi yang tersembunyi di sekitar suatu tempat?
Justin L.
1
Putty mampu mentransmisikan perintah mouse; kalimat pertama mungkin sudah ketinggalan zaman.
congusbongus
3

Jika Anda ingin menghapus semua baris dalam file dari nomor baris Anda saat ini, gunakan dG, itu akan menghapus semua baris (shift g)berarti akhir file

Syed
sumber