Saya baru-baru ini bertanya:
Bagaimana cara menambahkan awalan ke setiap baris?
Jadi, pergi dari kode di bawah ini:
I said Hello
I said There
I said I am some code
Untuk kode seperti:
Hello
There
I am some code
Sekarang, bagaimana cara saya menghapus n jumlah karakter dari satu baris?
text-editing
editing
Luke Shimkus
sumber
sumber
Jawaban:
Itu bahkan lebih mudah! Sekali lagi, gunakan perintah persegi panjang . Pindah ke salah satu sudut persegi panjang yang ingin Anda hapus, tekan
C-SPC
untuk mengatur tanda. Pindah ke sudut lain dari persegi panjang dan tekanC-x r d
(delete-rectangle
). Misalnya, pindah ke baris pertama yang ingin Anda tindak lanjuti, tekanC-a
atauhome
untuk pergi ke awal baris, pindah ke bawah ke baris terakhir yang ingin Anda tindak lanjuti, untuk pindah ke sudut kanan bawah, dan kemudian untuk menghapus.C-u number C-f
C-x r d
Jika baris terakhir memiliki lebih sedikit dari jumlah karakter yang diinginkan, mungkin lebih mudah menggunakan sudut kiri bawah dan kanan atas. Atau, Anda dapat menyisipkan karakter sampah (ini berguna jika baris pertama dan baris terakhir lebih pendek).
Anda dapat menggunakan
C-x r k
untuk membunuh persegi panjang, yang memungkinkan Anda untuk menarik (C-x r y
) nanti (pindah ke sudut kiri atas tempat di mana Anda ingin memasukkannya).Anda juga dapat menggunakan
C-x r t
(string-rectangle
) dan memasukkan string kosong.Perintah persegi panjang didasarkan pada posisi kolom. Jika Anda ingin menghapus n karakter, bukan n kolom (yang membuat perbedaan dengan karakter multi-kolom seperti tab), Anda dapat menggunakan penggantian ekspresi reguler : ganti
^.\{42\}
dengan nol untuk menghapus 42 karakter pertama dari setiap baris.sumber
Kemungkinan lain: Saya sangat suka menggunakan banyak kursor untuk tugas-tugas seperti ini. Tersedia dalam
package.el
melalui MELPA, itu menjadi bagian tak terpisahkan dari emacs saya. Saya hanya akan memilihI said
(dan mungkin termasuk baris sebelum), gunakanM-x mc/mark-all-like-this
, dan berada di jalan saya. Jika Anda ingin lebih banyak kontrol berbutir halus, Anda dapat menggunakanmc/mark-next-like-this
ataumc/mark-next-lines
.Pengikat kunci saya:
Batu Emacs yang wajib! episode: http://emacsrocks.com/e13.html
sumber
Jika Anda telah
cua-mode
mengaktifkan, maka:Saya lebih suka
cua-mode
cara kerjanya, dibandingkan dengan persegi panjang standar Emacs di mana yang setara adalah:The
cua-mode
menyimpan tiga penekanan tombol dibandingkan dengan standar Emacs persegi panjang.sumber
Demi kelengkapan: menghapus 3 karakter pertama dari setiap baris (secara formal: dari titik aktif, atau di wilayah) dapat dilakukan dengan mengganti regexp
^...
(atau lebih umum:)^.\{3\}
dengan string kosong.Penjelasan: dalam regexen,
^
berarti "awal garis",.
berarti "karakter apa saja", dan\{n\}
berarti " n pengulangan hal sebelumnya".Ini memiliki manfaat tambahan untuk menjadi interaktif (kecuali jika ada yang menekan
!
, yang membuatquery-regexp-replace
semuanya diganti mulai sekarang tanpa pertanyaan lebih lanjut).sumber
Dan satu kemungkinan lagi:
F3C-aC-3C-dC-nF4
merekam makro keyboard, pada dasarnya mengatakan "pindah ke awal baris, hapus tiga karakter, dan pindah ke baris berikutnya". Kemudian, Anda dapat memutar ulang hingga akhir buffer dengan C-uF4, atau C-xC-krmenerapkannya ke garis di wilayah. Ini memiliki satu kelemahan: itu akan rusak ketika setiap baris memiliki kurang dari 3 karakter.
sumber
Jika itu hanya sebuah garis, Anda dapat zap-to-char dengan Mz dengan asumsi bahwa karakter tidak diulangi antara titik dan yang Anda ingin hapus hingga. Untuk beberapa kasus, ini lebih cepat daripada membuat wilayah.
sumber