Son zamanlarda emaclara girmeye çalışıyorum ve doğru olması gereken şeylerden biri de girinti.Vim'in yumuşak toplarını Emacs'te nasıl taklit ederim?
Örnek 1:
sub foo {
my $bar = 'quux';
|
Örnek 2:
sub foo {
my $bar = 'quux'; |# foo
Yukarıdaki örneklerde boru karakter imleç pozisyonunu gösterir düşünün. Şimdi, her girinti seviyesi için (4) boşluk kullanıyorum (sekme yok) ve kodumu otomatik olarak akılda tutmak için emacs kurulumunu kullanıyorum. Orada sorun yok. Ancak, yukarıdaki örneklerde, belirtilen imleç pozisyonlarında geri adım atmak zorunda kalırsam, bir sonraki girinti seviyesine kadar geri dönüş yapmak için emacs istiyorum (sütun/4). Yani, önceki boşlukları sekmelerden yapılmış gibi ele almasını istiyorum. Bunun yerine, her zaman sadece bir boşluk karakterini siler.
Vim'de, sekmeler yerine boşluk eklenmesi için 'expandtab' özelliğini ve 'softtabstop' özelliğini açarak, (diğer şeylerin yanı sıra) yukarıda açıklandığı gibi bir sonraki "yumuşak tabstop" a dönüştürür.
Ne bilmek istiyorumif indent-tabs-mode is nil
if the cursor position is preceded by whitespace
calculate the position of the previous "soft tabstop"
if there's enough whitespace
backspace all the way to that point
else
backspace by one character
, orada bir daha basittir: böyle bir şey yapar bir işleve bağlama backspace (I emacs/elisp daha iyi bilse) Emacs'te
, şu yapabilirdim herhalde Bunu yapmanın yolu, ve/veya mevcut bir çözümü bilen var mı?
Bu Perl yazıyoruz gibi görünüyor ve cperl-mod (Emacs için en iyi Perl modu) zaten cperl 'için geriye doğru silme bağlar gerçeğiyle karmaşıklaşır -elektro-backspace'. (Her ne kadar bu fonksiyon kritik bir şey yapmasa da, sağladıkları davranışlar olmadan bunu başarabilirsiniz.) – cjm
Bir küçük güncelleme: Bir şey yanlış. Vim bir sonraki yumuşak sekme durağına geri dönemezse, mümkün olduğunca fazla boşluk (örneğin 1 ila 3) siler, sadece 1 değil. – Hinrik
Çözümü olabildiğince fazla boşluk bırakmak üzere güncellendi (sekme durağına kadar) –