Como parar o Gedit, Gvim, Vim, Nano de adicionar char de nova linha de fim de arquivo?

42

Às vezes, quero que a última linha de um arquivo de texto seja uma sequência simples de texto sem nenhum caractere de nova linha anexado: ... por exemplo. concatenar outro arquivo para ele.

Vários editores modificam automaticamente meu texto adicionando um caractere de nova linha, mesmo que eu não tenha pressionado Enter .

Remains unmodified: Emacs, SciTE, Kate, Peixe azul, Bloco de notas (vinho)

Newline is added: Gedit, Gvim, Nano Vim

Gostaria de saber se há alguma maneira de ajustar o Gedit, Gvim e Vim para salvar apenas o que eu digitei .... e até o Nano pode ser útil

Atualmente, uso o Gedit e estou mexendo no Gvim / Vim .. por isso, seria útil saber como "ativar / desativar" esses on / off ...

PS . Ao reabrir o mesmo arquivo no Gedit, Gvim e Vim, o posicionamento de fim de arquivo do cursor fica no final do texto, enquanto ele deve aparecer na próxima linha (vazia). Isso é enganoso (mas é por causa do que estou acostumado).

Eu usei um hexeditor para verificar as observações acima.

Peter.O
fonte

Respostas:

49

Para o gEdit , parece não haver uma maneira de desativar a inserção de uma nova linha no final, veja esta resposta .Instale o gEdit

Para Vim Instale o vim (e gVim Instale o vim ) você pode - executando a seguinte opção: :set binary. Definir como binário salvará o arquivo como está e não inserirá uma nova linha no final do documento (a menos que já exista uma, na qual ele será retido). A qualquer momento, você pode reverter esta opção com :set nobinary.

Nano Instale o Nano é um pouco mais fácil. Você pode iniciar o nano com a -Lbandeira (ou --nonewlinesse você for mais do tipo visual). Isso desativará a adição automática da nova linha ao final do arquivo (desde que uma não tenha sido realmente inserida). Idealmente, você poderia configurar este alias na sua ~/.bashrc: alias nano="nano -L"que iria lançar Nano com a bandeira há novas linhas incluídas nele!

Como não sei exatamente o que você está fazendo, vou apontar para você Por que os arquivos devem terminar com uma nova linha? o que pode explicar por que eles estão lá. Em resumo, alguns aplicativos falharão se não encontrarem um EOLdiretamente antes doEOF

Marco Ceppi
fonte
11
Obrigado Marco, uma ótima resposta ... O "Por que deveria ..." é uma interessante coleção de "porquês" ... Pessoalmente, sou muito "ciente das novas linhas" (foi por isso que notei :), mas certamente é um boa referência para todos (eu incluído) ... mas eu prefiro saber que eu adicionado, ou não adicionar isso ... Talvez haja um plugin obscuro para Gedit ...
Peter.O
3
Parece que para Gvim / Vim requer duas opções para ser set ... como por : ajuda 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
11
O Gedit (Launchpad) está ciente desse problema e o encontra na "lista de desejos" .... (Eu desejo, mas não vou prender a respiração por este! Se esse extrato significar algo: "... (ele ) preferiria confundir os usuários "
Peter.O
2
Para o nano, você pode colocar set nonewlinesem ~ / .nanorc (ou / etc / nanorc) para usar o -Lmodo por padrão.
precisa saber é o seguinte
Use editorconfig (editorconfig, org) - plugins disponíveis para vim e gedit. Especifique as opções desejadas no seu arquivo .editorconfig.
ddbug
16

Para o gEdit:

Se você estiver usando o Ubuntu 12.04 ou superior, já pode definir o comportamento.

Através de uma interface gráfica do usuário:

  1. Execute o dconf Editor ( dconf-editor)
  2. Vá para orggnomegeditpreferenceseditor
    (ou apenas pesquise ensure-trailing-newline)
  3. Desmarque ensure-trailing-newlinese você não deseja adicionar novas linhas automaticamente.

Na linha de comando:

  1. Abra um terminal ( ctrl+ alt+ T)
  2. digite o seguinte comando

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

    e pronto.

Referência Bug do Launchpad

Ravi Gadhia
fonte
11
Obrigado. É bom saber disso. Eu tentei e funciona ... (+1)
Peter.O
e o editor de pluma? (não ver "assegurar-arrastando-nova linha" de pluma)
AJCG
0

Se você deseja apenas escrever um arquivo de linha única, o eco é provavelmente a solução mais fácil:

echo -n "the contents of my file" > myfile
jpillora
fonte