Saya memiliki kode di bawah ini:
Hello
There
I am some code
Dan ingin menambahkan kode di depannya, seperti:
I said Hello
I said There
I said I am some code
Jadi bagaimana cara saya menambahkan awalan untuk setiap baris?
sumber
Saya memiliki kode di bawah ini:
Hello
There
I am some code
Dan ingin menambahkan kode di depannya, seperti:
I said Hello
I said There
I said I am some code
Jadi bagaimana cara saya menambahkan awalan untuk setiap baris?
Anda dapat menambahkan awalan dengan M-x string-rectangle
, yang terikat C-x r t
. Ini adalah bagian dari serangkaian perintah yang beroperasi pada seleksi persegi panjang ; ini memasukkan teks pada setiap baris dalam kotak.
Mulailah dengan menetapkan tanda di awal baris pertama, dan gerakkan kursor Anda ke karakter pertama dari baris terakhir yang ingin Anda awali:
*Hello
There
▮I am some code
Kemudian gunakan C-x r t
, masukkan awalan Anda ( I said
) dan tekan RET
. Ini menambahkan teks ke setiap baris dalam persegi panjang:
I said Hello
I said There
I said I am some code
Jika Anda tidak meluruskan kursor pada kolom yang sama dengan tanda Anda, itu akan menimpa bagian dari persegi panjang itu:
*Hello
There
I am▮ some code
dengan hasil perintah yang sama di:
I said o
I said e
I said some code
M-x string-insert-rectangle
. Ini sangat mirip, tetapistring-insert-rectangle
menyisipkan di awal setiap baris pilihan, sedangkanstring-rectangle
menggantikan , jadi dengan yang terakhir Anda harus lebih tepat tentang pilihan Anda jika Anda tidak ingin menimpa apa pun.Anda bisa menggunakan multi-kursor-mode , untuk meletakkan kursor di setiap baris. Kemudian, teks apa pun yang Anda ketikkan akan dimasukkan pada setiap baris.
Anda akan mulai dengan titik di awal potongan kode:
Kemudian tekan C->dua kali. (Ini adalah kunci yang disarankan mengikat; Anda harus mengaturnya sendiri.) Ini menciptakan dua kursor tambahan pada dua baris berikut:
Kemudian ketik
I said
. Teks akan ditambahkan pada setiap baris:Terakhir tekan RETuntuk keluar dari beberapa mode kursor dan meninggalkan titik pada kursor terakhir:
Berikut adalah video yang menunjukkan cara kerjanya.
sumber
Secara pribadi, saya lebih suka
replace-regexp
(ganti "^" dengan "Saya katakan").sumber
Pilihan lain adalah menggunakan makro, yang dapat menangani lebih banyak tugas daripada pilihan persegi panjang atau beberapa kursor, bahkan jika itu sedikit clunkier untuk kasus khusus ini.
Posisikan kursor di awal baris pertama dan tekan F3untuk mulai merekam, masukkan teks, gerakkan kursor ke awal baris berikutnya dan tekan F4untuk berhenti merekam. Sekarang tekan F4lagi untuk mengulangi makro, C-2 F4untuk mengulanginya dua kali, atau C-0 F4untuk mengulanginya sampai kesalahan (seperti kehabisan garis) ditemukan.
sumber
Anda dapat menginstal evil dan melakukannya dengan sejumlah cara vi-like - Saya lebih suka pemilihan blok visual menggunakan Ctrl+ Vuntuk menandai setiap baris dan kemudian Shift+ Iuntuk memasukkan dan kemudian ketik teks yang ingin Anda masukkan dan akhirnya tekan ESCuntuk keluar dari mode insert dan teks akan ditambahkan ke setiap baris. Ini sangat mirip dengan pilihan rectangular emacs tetapi sedikit penekanan tombol.
sumber
Ini sangat mirip dengan jawaban artagnon, tetapi
replace-regexp
tidak terikat pada kunci apa pun.Jadi, saya benar-benar menggunakan
query-replace-regexp
yang terikat secara defaultC-M-%
dan kemudian mengganti^
dengan awalan yang diberikanI said
dan kemudian ketik!
untuk mengganti semua tanpa diminta lagi.sumber
Jika Anda telah
cua-mode
mengaktifkan, maka:I said
sebagai teks yang akan disisipkanSaya lebih suka
cua-mode
cara kerjanya, dibandingkan dengan persegi panjang standar Emacs di mana yang setara adalah:I said
RET untuk memasukkan teksThe
cua-mode
menyimpan dua penekanan tombol dibandingkan dengan standar Emacs persegi panjang.Tetapi bagi saya, keuntungan tambahan dari cua-mode adalah bahwa saya dapat menambahkan teks ke persegi panjang (saya pribadi tidak tahu bagaimana menambahkan teks dengan persegi panjang standar Emacs). Dengan cua-mode, ini hanya satu RETtombol, dimasukkan sebelum
I said
.sumber