Emacs veya Vim'de düzenlemeyi * canlı * engelle


9

jEdit blok düzenlemeyi destekler, ancak Emacs ve Vim aynı konuda bazı ciddi kullanılabilirlik sorunlarına sahip gibi görünüyor. Birisi bilinmeyenleri buraya doldurabilseydi, her iki editörü kullanmak çok daha katlanılabilir olurdu:

  • Gerçek dikdörtgen seçim : Ekrandaki seçimin dikdörtgen olduğu durumlarda, daha sonra Emacs olarak bir bölgeyi hesaplamak için kullanılan doğrusal bir seçim değil, sınırlı olarak görünür.
    • jDüzenle: tuşunu basılı tutun Ctrlve öğesini seçin.
    • Vim: Tıklayın Ctrl-vve seçin.
    • Emacs: Bilinmiyor ; 400+ satır eklentisi gerekli gibi görünüyor .
  • Canlı dikdörtgen düzenleme : Bir blok seçiminden sonra düzenlediğinizde sonucun tüm satırlarda nasıl görüneceğini görün .
    • jEdit: Sadece yazmaya başlayın, sonuç olarak gittiğinizi göreceksiniz.
    • Vim: Tıklayın Shift-ive yazın. EscEkleme modundan çıkmak için düğmesine basıncaya kadar son sonucu yalnızca ilk satırda gösterecektir . Sonucu hemen tüm satırlarda görmenin bir yolu olup olmadığı bilinmemektedir.
    • Emacs: Bilinmiyor ; tek yol gibi görünüyor C-x r tve tuşuna bastıktan sonra metni dolduracak şekilde ayarlamak Ret.
  • Metnin dışındaki konumlarda seçimi başlatma ve sonlandırma : Örneğin, her satırın N ilk karakterini kaldırmak istiyorum, ancak ilk ve son satırlarda N karakterden daha az yer var.
  • Bloğu satır içine yapıştır: Kopyalanan bloğu, olduğu gibi birden çok satır yapıştırıyormuş gibi yapıştırın, metni orada değil aşağı doğru itin .
    • jEdit: Varsayılan. Bir bloğu blok olarak yapıştırmak için önce başka bir blok seçimi yapmanız gerekir.
    • Vim: OEscVp.
    • Emacs: Bilinmiyor .

Genel Emacs blok seçim işlevselliği cua-modeeklentide bulunabilir .


Görünüşe göre Emacs'ın sütun düzenleme modu bir çeşit canlı dikdörtgen düzenleme yapabilir: youtube.com/watch?v=k-6BVjlBSVo
Tom

Sadece emacs 400+ satır "eklentisi" hakkında bir gözlem .. gedit için biraz benzer bir addon, multi-edit denilen 1000 + satırları python kodu vardır. Benim için, pugin çok yararlı (onsuz nasıl hayatta kaldım), boyut akademik ... ve emacs reklamı yapılmış olarak çalışırsa, kullanmaktan çok mutlu olurum, ama bir yük hatası aldım koştuğumda "komut satırı-normalize-dosya-adı: Aralık dışında:" ", 1" :( ... Ben de aradığım şey ..
Peter.O

4
Jedit kullanmayanlar için lütfen terminolojinizi açıklayın. Burada "canlı" nın ne anlama geldiğini, "canlı dikdörtgen düzenlemenin" ne olduğunu veya "satır bloğunu yapıştırın" ne anlama geldiğini anlamıyorum.
Gilles 'SO- kötü olmayı kes'

Yanıtlar:


7

Vim'e cevap verebilirim ama Emacs için cevap veremem.

Metnin dışındaki konumlarda seçimi başlatma ve sonlandırma:

:set virtualedit=blockistediğiniz davranışı etkinleştirir. İlk sütunu bırakabilir ve isterseniz .vimrc'nize ekleyebilirsiniz. Daha fazla bilgi için, :help 'virtualedit'Vim içinden.

Blok satır içi yapıştır:

pKomut modunda yeni vurursanız , Vim bloğu ekler ve her satırda karakterleri sağa iter. Başka bir blok seçip vurursanız p, Vim bu bloğu yapıştırılan blokla değiştirir.

Komut modu tuş sırası ile bir blok "satırbaşı" yapıştırabilirsiniz OEscVp. Bu, geçerli satırın ( O Esc) üstüne bir çizgi ekler, çizgiyi ( ) seçer V, sonra üzerine yapıştırır ( p). Bunu (örneğin) tam anlamıyla - type ypgibi bir eşleme ile kısaltabilirsiniz :nmap yp O<Esc>Vp; <Esc>Escape tuşuna basmak yerine beş tuş vuruşu kullanın .


Güzel ipucu hakkında virtualedit; denemek zorunda. Satır içi yapıştırma hakkında, beklenen işlevin açıklaması için lütfen güncellenmiş soruya bakın.
l0b0

Cevabımı blokları yapıştırmak için bir yöntemle güncelledim.
Jander

5

Örneğin, her satırın N ilk karakterini kaldırmak istiyorum, ancak ilk ve son satırlar N'den az karakter içeriyor.

Emacs: Seçimi ilk satırda başlatın ve eksik sayıda karakteri (örn. Boşluk) son satıra ekleyin ve ardından kill-rectangle kullanın

Alternatif olarak, satır uzunluklarından bağımsız olarak pencerede serbestçe hareket etmenize izin veren artist-modeveya picture-modehangilerine izin verdiğinizi görün.

Blok satır içi yapıştır

Emacs: Önce bloğu kill-rectangle ile kaydedin veya bir kayıt defterine kaydedin, ardından ekleme noktasına gidin, delete-rectangle'ı kullanın ve ardından kaydedilen dikdörtgeni ekleyin.

400+ satır eklentisi gerekli gibi görünüyor

Emacs durumunda bu neden bir problemdir? Bir eklenti derlenebilir ve emacs felsefesi, her şeyi çekirdeğe koymamanız, ancak editörü genişletmek için eklentileri kullanmanızdır.


4

Orada 'cua modu' Emacsen 22.1 ile gelir ve üzeri ya da Emacs önceki sürümleri için indirmek için bağlantıyı takip edin. Bir var kısa video kolaylığını getirir.

Genel dikdörtgen komutları için, kolay bir giriş sağlayan kılavuzu okumayı deneyin .


emacs cua-modeiyi görünüyor! +1 .. Bahsettiğiniz videoyu bulamadım, Tom'un sorusunu hemen altındaki yorumlarda görün, (farklı?) Bir bilgi videosuna bağlantı için ...
Peter.O

@fered Ooops, kesme / yapıştırma hatası, sabit.
Trey Jackson

0

Vim'de, ilk n karakteri silmenin tipik yolu, benzer bir şey yapmaktır :%s/.\{0,6\}//.

%tüm belgeyi yapacak; bunu bir seçim veya önem verdiğiniz gerçek çizgilerle değiştirebilirsiniz. sKomut "yerine" içindir. Normal ifadeyi, verdiğiniz her şeyle değiştirir ve belirli bir seçenek eklemediğiniz sürece her satırda yalnızca bir kez eşleşir. /Bu herhangi bir karakter olabilir, ancak - bir ayırıcı /Başka kullanım şey avantajlıdır sürece (eğer kaçmak zorunda kalmamak genellikle kullanılan /komuta geri kalanında). İlk sınırlayıcıdan sonraki argüman, seçiminizde eşleşen dizeleri bulmak için kullanılacak normal bir ifadedir. İkinci sınırlayıcıdan sonraki argüman, maçın yerini alacak olan şeydir.

Yani bu komut, herhangi bir karakterin 0 ila 6 örneğini bulmayı ve bunları hiçbir şeyle değiştirmeyi söyler.


Ne istediğimi değil.
l0b0

Ancak bu soruyu bulan başkaları için yararlı olmadığını düşünüyor musunuz? Bence öyle ve bu yüzden buraya koyuyorum.
Shawn J. Goff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.