Tüm otomatik girintileri tamamen devre dışı bırak


18

Emacs'taki tüm otomatik girintileri nasıl tamamen devre dışı bırakabilirim? En azından Temel mod için devre dışı bırakmam gerekiyor, ancak geçerli oturum için küresel olarak devre dışı bırakıldığından eminim.

Lütfen yinelenmeden önce bu sorunun geri kalanını okuyun. Bulduğum diğer tüm cevaplar, girintiyi çok daha hedefli olarak devre dışı bırakmak içindir. Tüm oturum boyunca tüm otomatik girintileri tamamen devre dışı bırakmak istiyorum.

Ayar electric-layout-modeiçin nilçalışmaz.

ayrıntılar

Bazen Windows ASCII metin düzenleyicimle büyük Git yürütme iletileri oluşturmayı severim. Bu iletilerde sık sık madde işaretleri, kod blokları veya kaynak belgemdeki kesin biçimlendirmenin anlamlı olduğu başka şeyler bulunur. Kod tabanım Linux'ta ve kutuya salt metin SSH istemcisi kullanarak bağlandım. Git, tamamlama mesajını düzenlemek için Emacs'a girdiğinde, kaynak tamamlama mesajını Windows panosuna kopyalayıp Windows yapıştırma komutlarını kullanarak yapıştırabilmek istiyorum. Emacs açısından, Windows metin dosyasında bulunanları yazıyorum. Ne yazık ki, Emacs girintili çizgiler gördüğünde, kendi otomatik girintisini ekler, bu yüzden tamponun sol kenarı boyunca bu büyük boşluk üçgenini alırım.

GNU Emacs 24.3.1 kullanıyorum.

Geçici çözüm

Şu anki geçici çözümüm, Windows metin dosyamı Linux ana bilgisayarım tarafından monte edilen bir dosya sistemine aktarmak, dosyayı Emacs'a yüklemek, sonra içeriği aktarmak için kill ve yank kullanmaktır. Bu biraz hantal.

Misal

Aşağıda bir metin bloğu örneği verilmiştir:

a

  - b
    c
    d

MSWin macunu ile Emacs-under-ssh içine yapıştırdığınızda şöyle görünür:

a

  - b
      c
          d

Ben basarsanız C-h lmacunu yaptıktan sonra, burada gördüğüm budur. Yeni satırların girdi kullanılarak girildiğine C-jdikkat edin RET.

a C-j C-j SPC SPC - SPC b C-j SPC SPC SPC SPC c C-j
SPC SPC SPC SPC d C-j C-h l

Girintiyle ilgili değişkenlerin bazıları arabellek-yerel olduğu sürece, büyük mod kancasından sonra çalışan bir şey olması gerekirdi - örneğin, belki de [?] hack-local-variables-hook- standart başlatma. fundamental-modeiçinde sadece küçük bir işlev var simple.el- yani (kill-all-local-variables) (run-mode-hooks),. M-x find-function RET fundamental-mode RET- gerektiğinde kendiniz değişiklik yapabilir / oluşturabilirsiniz; ancak, adı değiştirirseniz, bazı işlevler tarafından kullanılmaz - bu nedenle aynı adı tutmayı düşünün.
hukukçu


Emacs eşdeğer vim var :set pastemı? Bu temelde "yapıştırılan metne hiçbir şekilde dokunma" diyor. Otomatik girintiyi de içerir.
Omair Majid

Yanıtlar:


21

Emacs ≤24,3

RET tuşuna basıldığında varsayılan olarak girintili değildir (moda göre yapılandırmayı kontrol etmeniz gereken bazı programlama modları hariç, örneğin “elektrik” ayarları).

Pano içeriği yeni satır içerdiğinde (satır besleme karakteri ile temsil edilir) Unix terminalleri normalde satır başı karakteri yapıştırır. Emacs'te gibi bir satırbaşı görünüyor RETtuşu (aslında, RET olduğu gibi bir satır besleme görünüyor (olan) iken, satırbaşı karakteri) C-j.

Ancak, sizin durumunuzda, yeni satır yapıştırmak Emacs'ta C-jkomuta bağlı olan bir a ile sonuçlanır newline-and-indent. Adından da anlaşılacağı gibi, bu komut girintilidir. PuTTY'nin değiştirebileceğiniz bir ayarı olup olmadığını bilmiyorum. Eğer Emacs ucunda sorunu çözmek istiyorsanız ama kusura olmaz düşünmek kolay bir çözüm vardır: bağlamak C-jiçin newline(aynı RET).

(global-set-key "\C-j" 'newline)

Emacs ≥24,4

Emacs 24.4'te, Elektrikli Girinti modu varsayılan olarak açıktır. Bu küresel bir küçük moddur, böylece arayarak her yerde kapatabilir (electric-indent-mode 0)ve etkileşimli olarak değiştirebilirsiniz M-x electric-indent-mode RET.

Bu bilgileri kılavuzda veya çağrılan komutun belgelerine bakarak Return(tuşuna basın C-h k RET) bulabilirsiniz.

İle belirli bir arabellekte açabilirsiniz electric-indent-local-mode. Bazı programlama modları (özellikle üçüncü taraf olanlar), Elektrikli Girinti modunun ayarlarına uymayan kendi otomatik girinti özelliklerine sahip olabilir.


electric-indent-modevarsayılan olarak devre dışıdır (Emacs 24.3.1 kullanıyorum çünkü söylediklerinizle tutarlıdır). Açık ve kapalı konuma getirmek yardımcı olmaz. electric-indent-local-modeüzerinden bana ulaşılamıyor M-x. Yardım RETüç ayar bahseder: use-hard-newlines, auto-fill-function, ve fill-column. Geçiş yapmak veya üzeri olanlar değiştirerek M-x use-hard-lines, M-x auto-fill-modeve M-x set-fill-column RET 0 RETyardım yok.
Bay Fooz

@MrFooz Oh, üzgünüm, sorunuzdaki Emacs sürümüne dikkat etmemiştim. Ama sonra neden otomatik girinti elde ettiğinizi merak ediyorum. Hmmm. İle otomatik girinti alıyor musunuz emacs -q? Lütfen yeni satır içeren bazı kısa metinleri ( fooyeni satır deyin bar) Emacs'a yapıştırın ve düğmesine basın C-h l, ne görüyorsunuz? … f o o RET b a rveya … f o o C-j b a rveya … f o o RET C-j barveya başka bir şey? SSH istemcisini hangi terminalde çalıştırıyorsunuz?
Gilles 'SO- kötü olmayı bırak

Orijinal yayına örnek bir metin bulanıklığı ekledim. Eklemek -qyardımcı olmaz (örn. emacs -q -nw --no-desktop). Bunun C-jyerine görüyorum RET. SSH istemcim olarak PuTTY 0.63 kullanıyorum. Ben aynı davranışı görmek TERMiçin sette screenve xterm.
Bay Fooz

@MrFooz Tamam, PuTTY bir CR yerine bir LF gönderdiğinden, Emacs'a bir LF'ye girintilememesi talimatını vermeniz gerekir. Global olarak kapatmak kolay, cevabımı düzenledim.
Gilles 'SO- kötü olmayı bırak

Teşekkürler, global-set-keyhack sorunu çözdü. EDITORGit taahhüt iletilerini düzenlerken takma adlarımı başlangıçta otomatik olarak çağıracak şekilde ayarlamanın bir yolunu bulacağım . Favori Windows metin düzenleyicimi Windows yerine UNIX stili satır sonlarını kullanacak şekilde yapılandırdığım için satır başları yerine satırsonu yapıştırılıyor.
Bay Fooz

1

Basamaklama yapıştır modunu da deneyebilirsiniz. Bu, terminal emülatörünüzün (bu durumda PuTTY, sürüm 0.63 ve üstü), kullanıcının bir şey yapıştırdığını belirtmek için kaçış dizileri kullanan ve daha sonra macun sona erdiğinde bir özelliktir. Yükleyebileceğiniz bir Emacs paketi bracketed-pastevar, Emacs'ın kaçış dizilerini tanımasını ve macun süresi boyunca daha güvenli bir tuş eşlemesine geçişini sağlar. Bu, girintinin dağılmasını önlemekle kalmaz, aynı zamanda bir haydut macununun emacs oturumunuzda komutları çalıştırmasını da engeller M-x.

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.