Gedit, Gvim, Vim, Nano'nun Dosya Sonu yeni satır karakterini eklemesini nasıl önleyebilirim?


42

Bazen bir metin dosyasının son satırının, yeni satır karakteri eklenmemiş basit bir metin dizisi olmasını istiyorum : ... eg. başka bir dosyayı birleştirmek için.

Bazı editörler , Enter tuşuna basmasam bile, yeni bir satır karakteri ekleyerek metnimi otomatik olarak değiştiriyor .

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Not Defteri (şarapçılık)

Newline is added: Gedit, Gvim, Vim, Nano

Gedit, Gvim ve Vim'i çimdiklemenin bir tek yolu olup olmadığını, sadece yazdıklarımdan tasarruf etmenin bir yolu olup olmadığını bilmek istiyorum .... ve Nano bile işe yarayabilir

Şu anda Gedit kullanıyorum ve Gvim / Vim’de dedikodu yapıyorum. Bu yüzden bu açma / kapama işlemlerinin nasıl "değiştirileceğini" bilmek yararlı olacaktır.

PS . Aynı dosyayı Gedit, Gvim ve Vim'de tekrar açtıktan sonra, imlecin dosya sonu yerleşimi metnin sonundadır, oysa bir sonraki (boş) satırda görünmesi gerekir. Bu yanıltıcı (ama alıştığım şey yüzünden).

Yukarıdaki gözlemleri kontrol etmek için bir hexeditor kullandım.

Yanıtlar:


49

İçin Gedit devre dışı ucunda takılı bir yeni satır sahip bir yol olarak görünmüyor bakın bu cevabı .GEdit'i yükleyin

İçin Vim Vim yükle (ve GVIM Vim yükle ) yapabilirsiniz - Aşağıdaki seçeneği yürüterek: :set binary. İkili olarak ayarlamak, dosyayı olduğu gibi kaydeder ve belgenin sonuna yeni bir satır eklemez (İçinde tutulacak bir tane yoksa). İstediğiniz zaman bu seçeneği ile geri alabilirsiniz :set nobinary.

Nano Nano'yu yükleyin biraz daha kolay. Nano'yu -Lbayrakla başlatabilirsiniz (ya --nonewlinesda daha çok görsel türseniz). Bu, yeni satırın otomatik olarak dosyanın sonuna eklenmesini engeller (gerçekte girilmediği sürece). İdeal olarak, bu takma adı şunun içine koyabilirsiniz ~/.bashrc:, alias nano="nano -L"Nano'yu içinde hiçbir yeni satır yok işareti bulunan Nano ile başlatacak!

Ne yaptığınızı tam olarak bilmediğimden, sizi işaret edeceğim. Neden dosyalar yeni bir satırla bitmeli? neden orada olduklarını açıklayabilir. Kısacası bazı uygulamalar, EOLdoğrudan aramadan önce doğrudan bulamazlarsa başarısız olur .EOF


1
Teşekkürler Marco, harika bir cevap ... "Neden omuzlar ..." ilginç bir "whys" topluluğudur ... Ben şahsen çok "newline farkındayım" (bu yüzden onu farkettim :) ama kesinlikle bir herkes için iyi bir referans (kendim dahil) ... ama eklediğimi veya eklediğimi bilmeyi tercih ediyorum ... Belki Gedit için belirsiz bir eklenti var ...
Peter.O

3
GVIM / Vim için başına ... set olmak için iki seçenek gerektirdiğini görünüyor yardımıyla EOL: ...When writing a file and this option ('eol') is off and the 'binary' option is on, no EOL will be written for the last line in the file.
Peter.O

1
Gedit (Launchpad) bu sorunun farkında ve "dilek listesi" nde bulundurun .... (Keşke, ama bunun için nefesimi tutmayacağım! ) kullanıcıları şaşırtmak yerine "
Peter.O

2
Nano için, varsayılan olarak modu set nonewlineskullanmak için ~ / .nanorc (veya / etc / nanorc) komutunu kullanabilirsiniz -L.
mwfearnley 20:16

Editorconfig (editorconfig, org) - vim ve gedit için mevcut olan eklentileri kullanın. .Editorconfig dosyanızda istediğiniz seçenekleri belirtin.
ddbug

16

GEdit için:

Ubuntu 12.04 veya daha üstünü kullanıyorsanız, davranışı önceden ayarlayabilirsiniz.

Grafiksel bir kullanıcı arayüzü aracılığıyla:

  1. Dconf Editor'ü çalıştırın ( dconf-editor)
  2. orggnomegeditpreferences→ Git editor
    (veya sadece ara ensure-trailing-newline)
  3. Yeni ensure-trailing-newlinesatırları otomatik olarak eklemek istemiyorsanız, işareti kaldırın .

Komut satırında:

  1. Bir terminal aç ( ctrl+ alt+ T)
  2. aşağıdaki komutu girin

    gsettings set org.gnome.gedit.preferences.editor ensure-trailing-newline false
    

    ve bitti.

Referans | Launchpad hatası


1
Teşekkürler. Bunu bilmek güzel. Denedim ve işe yarıyor ... (+1)
Peter.O

Peki ya pluma editörü? (pluma için "sure-trailing-newline" ifadesini görmeyin)
ajcg

0

Sadece tek satırlık bir dosya yazmak istiyorsanız, echo muhtemelen en kolay çözümdür:

echo -n "the contents of my file" > myfile
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.