Saya telah menggunakan ViM, TextMate, dan GNU Emacs selama bertahun-tahun.
Misalnya di sini adalah teks yang ingin saya edit
foo
foo
foo
Dan inilah hasil teks yang ingin saya miliki
bar foo
bar foo
bar foo
Ketika saya di Vim, saya bisa melakukan "Ctrl v" pada baris pertama dan kolom pertama, lalu tekan "2 j", lalu tekan "i", lalu ketik "bar", selesai.
Ketika saya menggunakan Textmate, saya dapat menekan "Apple Command Option" saat memilih ke bawah (dengan mouse saya), lalu ketik "bar", selesai.
Tetapi ketika saya menggunakan GNU Emacs 23.1, saya tidak tahu bagaimana melakukannya. : ((
Saya mencari EmacsWiki dan mencari-cari di sekitar tetapi tidak mendapatkan solusinya. Tolong tuntun saya jika Anda tahu solusi saya. Akan bersyukur untuk itu.
Jawaban:
Dua pilihan muncul di benak. Yang pertama adalah persegi panjang (sebagaimana disebutkan dalam jawaban lain). Arahan eksplisit untuk itu adalah:
Pilihan lain, yang menyediakan perintah pengeditan segi empat / kolom yang sangat bagus adalah mode CUA . Berikut ini adalah posting blog (pengungkapan: blog saya) yang menjelaskan cara menggunakannya. Untuk melihat kekuatan mode CUA, sangat layak menonton video tiga menit ini .
Saya mengintegrasikan mode CUA dengan yang berikut ini (karena saya lebih suka untuk tidak memiliki mode tanda sementara):
sumber
Dalam Emacs-24.4, dukungan dasar untuk persegi panjang telah sedikit ditingkatkan, jadi daripada menggunakan
C-SPC
diikutiC-x r t
, Anda dapat melakukan:Salah satu hal yang menyenangkan tentang itu dibandingkan dengan
C-SPC
metode ini adalah Anda akan mendapatkan umpan balik visual tentang persegi panjang yang Anda pilih. Tentu sajacua-mode
metode ini juga berfungsi (dan bekerja dengan cara yang sama).sumber
cua-mode
sudah lebih tepat ... Hanya untuk menyebutkan satu hal: dicua-mode
, sementara persegi panjang disorot, saya bisa mengetik dan menambahkan teks. Di "dukungan basis" emacs bawaan saat ini, sorotan menghilang (pemilihannya "dibatalkan") dan input dimasukkan pada titik kursor. Ini kontra-intuitif dan bukan yang biasanya saya inginkan (dan biasakan bagaimanacua-mode
melakukannya)(global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)
.C-t
operasi rectange non-CUA (aliasC-x r t
) juga menunjukkan kepada Anda pratinjau teks yang baru disisipkan saat Anda mengetiknya.Dalam emacs, jenis kolom ini disebut sebagai 'persegi panjang'. Jadi ini adalah halaman dokumentasi yang relevan.
Semua perintah ini mengharuskan wilayah tersebut berisi kotak yang Anda operasikan. Jadi, Anda perlu mengatur tanda di karakter kiri atas dalam persegi panjang dan memperluas wilayah ke karakter kanan bawah dalam persegi panjang. Perintah yang Anda cari adalah
M-x string-insert-rectangle
yang kemudian meminta Anda untuk memasukkan string.sumber
Jawaban terpendek: Mengaktifkan mode persegi panjang CUA via C-RET.
Jadi, untuk kasus Anda, itu akan terjadi
bar
SPCLihat jawaban @Trey untuk solusi yang lebih rumit dan tautan ke CUA.
sumber
Anda dapat menggunakan ganti-regexp untuk ini:
Ini akan menambahkan bilah ke awal baris.
sumber