jEdit mendukung pengeditan blokir, tetapi Emacs dan Vim tampaknya memiliki beberapa masalah kegunaan serius pada subjek yang sama. Jika seseorang dapat mengisi yang tidak diketahui di sini, akan lebih baik jika menggunakan salah satu editor:
- Seleksi persegi aktual : Di mana pemilihan pada layar adalah persegi panjang, bukan seleksi linear yang kemudian digunakan untuk menghitung suatu wilayah karena Emacs tampaknya terbatas.
- jEdit: Tahan Ctrldan pilih.
- Vim: Klik Ctrl-vdan pilih.
- Emacs: Tidak Diketahui ; Sepertinya diperlukan 400+ baris plugin .
- Pengeditan persegi panjang langsung : Lihat seperti apa hasilnya pada semua baris saat Anda mengedit setelah pemilihan blok.
- jEdit: Cukup mulai mengetik, dan Anda akan melihat hasil akhirnya saat Anda menggunakannya.
- Vim: Klik Shift-idan ketik. Akan menunjukkan hasil akhir hanya pada baris pertama sampai Anda menekan Escuntuk keluar dari mode penyisipan. Tidak diketahui apakah ada cara untuk melihat hasilnya di semua lini dengan segera.
- Emacs: Tidak Diketahui ; Sepertinya satu-satunya cara adalah C-x r tdan mengatur teks untuk diisi setelah menekan Ret.
- Mulai dan akhiri pemilihan pada posisi di luar teks : Misalnya, saya ingin menghapus N karakter pertama dari setiap baris, tetapi baris pertama dan terakhir mengandung kurang dari N karakter.
- jEdit: Tidak masalah, pilihan blokir dapat mulai di luar teks.
- Vim:
:set virtualedit=block
. - Emacs: Mungkin dengan
artist-mode
dan / ataupicture-mode
.
- Tempel blok sebaris : Tempel blok yang disalin seolah-olah Anda menempelkan beberapa baris, seperti dalam, dorong teks yang sudah ada di bawah , tidak benar.
- jEdit: Default. Untuk menempelkan blok sebagai blok, Anda harus melakukan pemilihan blok lain terlebih dahulu.
- Vim: OEscVp.
- Emacs: Tidak Diketahui .
Fungsionalitas pemilihan blok General Emacs dapat ditemukan di cua-mode
plugin .
Jawaban:
Saya bisa menjawab untuk Vim, tetapi tidak untuk Emacs.
Mulai dan akhiri pemilihan pada posisi di luar teks:
:set virtualedit=block
akan memungkinkan perilaku yang Anda inginkan. Anda dapat menjatuhkan titik dua awal dan menambahkannya ke .vimrc Anda jika Anda mau. Untuk info lebih lanjut,:help 'virtualedit'
dari dalam Vim.Tempel blok inline:
Jika Anda menekan pdi mode Perintah, Vim akan menyisipkan blok, mendorong karakter ke kanan di setiap baris. Jika Anda memilih blok lain dan tekan p, Vim akan mengganti blok itu dengan blok yang ditempelkan.
Anda dapat menempelkan blok "secara garis" dengan urutan tombol mode-perintah OEscVp. Ini menyisipkan garis di atas garis saat ini (
O Esc
), memilihnya secara garis lurus (V
), lalu menempel di atasnya (p
). Anda dapat mempersingkat ini menjadi (misalnya) ypdengan pemetaan seperti:nmap yp O<Esc>Vp
- ketik yang secara harfiah; gunakan lima kali penekanan tombol<Esc>
daripada menekan tombol Escape.sumber
virtualedit
; harus mencobanya. Tentang penyisipan sebaris, silakan lihat pertanyaan yang diperbarui untuk deskripsi fungsi yang diharapkan.Emacs: mulai seleksi di baris pertama dan cukup tambahkan jumlah karakter yang hilang (misalnya spasi) ke baris terakhir dan kemudian gunakan kill-rectangle
Atau, lihat
artist-mode
ataupicture-mode
yang memungkinkan Anda untuk bebas bergerak di jendela terlepas dari panjang garis.Emacs: Pertama-tama simpan blok dengan membunuh-persegi panjang atau menyimpannya ke register, kemudian pergi ke titik penyisipan, gunakan hapus-persegi panjang dan kemudian masukkan persegi panjang yang disimpan.
Dalam kasus Emacs mengapa ini menjadi masalah? Plugin dapat dikompilasi dan filosofi emacs adalah Anda tidak meletakkan semuanya ke dalam inti, tetapi gunakan plugin untuk memperluas editor.
sumber
Ada 'cua-mode' yang hadir dengan Emacsen 22.1 dan yang lebih baru, atau ikuti tautan untuk mengunduh Emacs versi sebelumnya. Ada video pendek yang memperkenalkan fungsionalitas.
Untuk perintah persegi panjang umum, cobalah membaca manual , yang menyediakan pengenalan yang mudah.
sumber
cua-mode
terlihat bagus! +1 .. Saya tidak dapat menemukan video yang Anda sebutkan, lihat tautan Tom di komentar tepat di bawah pertanyaan, untuk tautan ke video info (berbeda?) ...Dalam vim, cara khas untuk menghapus n karakter pertama adalah dengan melakukan sesuatu seperti
:%s/.\{0,6\}//
.%
akan melakukan seluruh dokumen; Anda dapat menggantinya dengan pilihan atau dengan garis aktual yang Anda pedulikan. Thes
perintah untuk "pengganti". Itu akan mengganti ekspresi reguler dengan apa pun yang Anda berikan, dan itu hanya akan cocok sekali pada setiap baris kecuali Anda menambahkan opsi tertentu. Ini/
adalah pembatas - ini bisa berupa karakter apa saja, tetapi/
biasanya digunakan kecuali menguntungkan untuk menggunakan sesuatu yang lain (jadi Anda tidak perlu melarikan diri/
dalam sisa perintah). Argumen setelah pembatas pertama adalah ekspresi reguler yang akan digunakan untuk menemukan string yang cocok dalam pilihan Anda. Argumen setelah pembatas kedua adalah pertandingan apa yang akan diganti.Jadi perintah ini mengatakan temukan 0 hingga 6 contoh karakter apa pun, dan gantilah dengan apa pun.
sumber