Normal modda j, CTRL-J, <NL> ve CTRL-N arasındaki fark nedir?


12

Web'de bir yerde birisinin kullandığını gördüm Ctrl-Jve bu eşlemeyi bilmediğim için ilgili dokümana baktım ve aşağıdakileri buldum:

j           or
<Down>      or
CTRL-J      or
<NL>        or
CTRL-N          [count] lines downward linewise.

Bu da beni birkaç soruya yönlendiriyor:

  • Ne<NL> ben bir eşdeğeri olarak görecek: <CR>basılarak beri Entervarsayılan olarak normal modda bir satır aşağı gidecek ama neden öyle <NL>burada değil <CR>?
  • Bu eşlemeler arasındaki fark nedir : Bu 5 seçeneğin tümü aynı şekilde bir satır aşağı gider mi? Testlerime göre evet cevabı verirdim ama bu bir sonraki sorumu doğuracaktı.
  • Aynı şeyi yapmak için neden 5 eşleme var : Bunu anlayabiliyorum jve <down>eşlemeleri vim için kullanmayan kullanıcılar için tutuldum, ancak neden diğer eşlemeler var?
  • Birini diğerinden daha ne zaman kullanmak daha ilginç : Bu, önceki sorunun devamıdır: Çok fazla olasılık varsa, farklı avantajlara sahip olduklarını veya belirli kullanım durumlarında daha iyi olduklarını tahmin ediyorum. Bu kullanım durumları nelerdir?

Ben baktığım zaman bu komutları fazlalık daha garip bulmak :h kkadar gitmek sadece 3 yolu vardır: k, <UP>ve ctrl-p. Bonus soru şu: Neden aşağı inmek için 5, yukarı çıkmak için sadece 3 yol var?


Varsayılan Ctrl-Jbağlayıcıyı kullandıklarından emin misiniz ? En azından tanıdığım kişiler arasında Ctrl-J/K"başlangıç ​​çizgisiyle aynı girinti düzeyine sahip bir sonraki satıra kadar aşağı / yukarı" eşlemesi yaygın görünüyor .
Aaron Dufour

4
"Neden aşağı inmek için 5 ve yukarı çıkmak için sadece 3 yol var?" Şey, çünkü, hayatta, işler güneye daha kolay gider ! :)
VanLaser

@ VanLaser gerçekten harika bir cevap, bu ipucunu dokümana eklemeyi düşünmeliler! ;-)
statox

@ VanLaser Çok kötü değil. Bu oranda, tüm insanlık hiçbir zaman hiçbir şeye dönüşmeyecek!
xji

Yanıtlar:


16

Bahsettiğiniz ilginç <CR>. <CR>veya teknik olarak kullanılan satır başlangıcına gitmek için kullanılan satırbaşı . <NL>veya bir sonraki satıra gitmek için newline aka line feed (genellikle denir LF) kullanılmıştır . Zamanla, ayrım çoğu uygulamada kayboldu. 1 tuşuna basmak genellikle bir satırbaşı döndürür (genellikle basmayı deneyin - Unix terminallerinde görmelisiniz ). adlı kullanıcının kontrol kodu .EnterCtrlVEnter^M<NL>CtrlJ

CtrlNbeni şaşırttı. 2'ye göre , bir kayma karakteri:man ascii

Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
────────────────────────────────────────────────────────────────────────
016   14    0E    SO  (shift out)             116   78    4E    N

İçinde kayması ve kayma dışarı göre karakterler, Vikipedi :

... elektromanyetik daktiloda veya ışınlayıcıda, genellikle kırmızı ve siyahla boyuna, diğer renge yukarı ve aşağı bölünen bir isimlendirme, bu nedenle isimlendirme, renkli bir şerit sağladı ...

Aşağı inmenin anlamı nasıl sona erdi benim için bir gizem.


Neden aşağı inmek için 5, yukarı çıkmak için sadece 3 yol var?

Yukarı çıkmanın üç yolu, aşağı inmek için karşılık gelen yollara sahiptir. ( CtrlPmuhtemelen, içeri / dışarı kaymanın burada önemli olmadığını CtrlNima eden bir tamamlayıcıdır ). Ekstra iki yol aşağı ( veya ) aslında aynı yolun iki temsilidir. daktilo günlerinden kalıtımdır - ve o günlerde yukarı çıkmanın bir anahtarı olduğunu düşünmüyorum - sadece aşağı inmek.<NL>CtrlJ<NL>

Ayrıca bakınız:

1 Bazı durumlarda ( biçimlendirilmiş çoğu yazdırma işlevini / aracını kullanarak yazdırma \r(satır başı) ve \n(satır besleme) hala eski anlamı koruyor.

2 Bu tablo, alfabe aynı satırdaki karakterin kontrol koduna karşılık gelecek şekilde düzenlenmiştir.


3
Her zaman bir sonrakiCtrl-N için olduğunu düşündüm ve önceki içindi . Zaten Emacs'ta bunun için duruyorlar ve bağlı oldukları . Ayrıca, vardiya değildir ; öyle veri bağı kaçış . Shift DİR . Ctrl-Pnext-lineprevious-lineCtrl-PCtrl-O
Lithis

@Lithis düzeltildi.
muru

2
@Lithis Dürüst olmak gerekirse, Emacs hakkında bildiğim tek şey cx ce.
muru

Tarihsel ve açık cevap, çok teşekkürler Muru! Cevabın sık sık orada bulunduğu karakterlerin ascii kodunu düşünmeliydim.
statox

muru Bu çok kötü çünkü Emacs'ın sunabileceği çok şey var, özellikle bana çok yardımcı olan kuruluş modu. Kullanmak için herhangi bir geleneksel Emacs komutunu bilmenize gerek kalmadan Vim öykünmesine yoğunlaşan Spacemacs github.com/syl20bnr/spacemacs projesine göz atmanızı tavsiye ederim . Belki bu algınızı biraz değiştirir.
xji

8

Bkz :help key-notation.

  1. <NL>"satır besleme" ve "satır başı" <CR>anlamına gelir.

    Bunlar mevcut çizgiyi kırmanın iki farklı yoludur. Tarihsel olarak farklı kontrol karakterlerine ( ctrl-jve ctrl-m) bağlıdırlar, ancak genellikle aynı tuşla yerleştirilirler <CR>. <NL>Bu bağlamda kullanmanın mantık dışı göründüğüne katılıyorum .

  2. Tüm bu "eşlemeler" (aslında eşlemeler değildir) tam olarak aynı şekilde davranırlar.

  3. Tarih, çoğunlukla, platformlar arası kısıtlamalar da içermektedir.

    Bill Joy'un terminalinde özel hareket tuşları yoktu, ancak oklar hjkltuşların üzerindeydi. Modal editörler o zamanlar nadir olduğu için, bu tuşlara basıldığında ilgili karakter yalnızca yaptığınız işe eklendi. Sen basın vardı <C-h>, <C-j>, <C-k>ve <C-l>ekranda imleci hareket ettirmek için.

    Gördüğünüz gibi, orada oldukça büyük bir örtüşme aramda j, <C-j>, <NL>ve <Down>. <C-n>genellikle Vim'de "sonraki" anlamına gelir, yoldaşlarıyla nasıl toplandığını görmek kolaydır.

  4. Hepsi eşanlamlı olduğu için, sizin için en uygun olanı kullanmakta özgürsünüz.

    <CR>Örneğin, kendi eşlemelerinizde kullanabileceğiniz ilginç bir anahtardır.


Aydınlanma için teşekkürler! <CR>Haritalamaya çok katılıyorum . Ayrıca bir soru daha: Bu "tuş kombinasyonlarının" aslında eşleme olarak adlandırılmadığını biliyorum, ancak bunları nasıl aramam gerektiğinden emin değilim?
statox

Bu ilginç bir soru, onlara "komut" deme eğilimindeyim.
romainl

Yanlış olabilir ama mod komutları gibi eski atıfta "komutu" değil :ls, :substitute, new, vb ...?
statox

xaynı zamanda bir "komut" dur.
romainl

Nitekim sadece o doktor çağrıları gördük x, dd, cvb "komutları". Yani haklı olmalısın, sanırım bu jya ^Jda emirdir.
statox
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.