Làm cách nào để ngăn Gedit, Gvim, Vim, Nano thêm char dòng mới End-of-File?


42

Đôi khi tôi muốn dòng cuối cùng của tệp văn bản là một chuỗi văn bản đơn giản không có ký tự dòng mới được thêm vào: ... ví dụ. để nối một tập tin khác với nó.

Một số biên tập viên tự động sửa đổi văn bản của tôi bằng cách thêm một ký tự dòng mới, mặc dù tôi chưa nhấn Enter .

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Notepad (rượu vang)

Newline is added: Gedit, Gvim, Vim, Nano

Tôi muốn biết liệu có cách nào để điều chỉnh Gedit, Gvim và Vim để chỉ lưu những gì tôi đã nhập .... và thậm chí Nano có thể có ích

Tôi hiện đang sử dụng Gedit và tôi đang tìm hiểu về Gvim / Vim .. vì vậy sẽ rất hữu ích khi biết cách "bật" các chế độ này trên / tắt ...

PS . Khi mở lại cùng một tệp trong Gedit, Gvim và Vim, vị trí cuối tệp của con trỏ nằm ở cuối văn bản, trong khi nó thực sự sẽ hiển thị trên dòng tiếp theo (trống). Điều này là sai lệch (nhưng đó là vì những gì tôi đã từng).

Tôi đã sử dụng một hexeditor để kiểm tra các đài quan sát ở trên.

Câu trả lời:


49

Đối với gEdit dường như không có cách nào để vô hiệu hóa việc chèn một dòng mới ở cuối xem câu trả lời này .Cài đặt gEdit

Đối với Vim Cài đặt vim (và gVim Cài đặt vim ), bạn có thể - bằng cách thực hiện tùy chọn sau : :set binary. Cài đặt thành nhị phân sẽ lưu tệp như hiện tại và không chèn một dòng mới vào cuối tài liệu (Trừ khi đã có một tệp, trong đó nó sẽ được giữ lại). Bất cứ lúc nào bạn có thể hoàn nguyên tùy chọn này với :set nobinary.

Nano Cài đặt Nano dễ dàng hơn một chút. Bạn có thể khởi chạy nano bằng -Lcờ (hoặc --nonewlinesnếu bạn là loại hình ảnh trực quan hơn). Điều này sẽ vô hiệu hóa việc thêm tự động dòng mới vào cuối tệp (miễn là không thực sự được nhập). Lý tưởng nhất là bạn có thể thiết lập bí danh này trong ~/.bashrc: alias nano="nano -L", sẽ khởi chạy Nano mà không có cờ mới nào trong đó!

Vì tôi không biết chính xác những gì bạn đang làm nên tôi sẽ chỉ cho bạn Tại sao các tệp nên kết thúc bằng một dòng mới? có thể giải thích tại sao họ ở đó. Nói tóm lại, một số ứng dụng sẽ thất bại nếu chúng không tìm thấy EOLtrực tiếp trướcEOF


1
Cảm ơn Marco, một câu trả lời tuyệt vời ... "Tại sao nên ..." là một bộ sưu tập thú vị của "cá nhân" ... Cá nhân tôi rất "nhận thức về dòng mới" (đó là lý do tại sao tôi nhận thấy nó :) nhưng nó chắc chắn là một tài liệu tham khảo tốt cho tất cả mọi người (bao gồm cả bản thân tôi) ... nhưng tôi thích biết rằng tôi đã thêm hoặc không thêm nó ... Có thể có một plugin tối nghĩa cho Gedit ...
Peter.O

3
Dường như đối với Gvim / Vim, nó yêu cầu hai tùy chọn được đặt ... theo : giúp 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) nhận thức được vấn đề này và đưa nó vào "danh sách mong muốn" .... (Tôi ước, nhưng tôi sẽ không nín thở vì điều này! Nếu trích xuất này có ý nghĩa gì: "... (nó ) thà gây nhầm lẫn cho người dùng "
Peter.O

2
Đối với nano, bạn có thể đặt set nonewlines~ / .nanorc (hoặc / etc / nanorc) để sử dụng -Lchế độ theo mặc định.
mwfearnley

Sử dụng Editorconfig (Editorconfig, org) - các plugin có sẵn cho vim và gedit. Chỉ định các tùy chọn mong muốn trong tệp .editorconfig của bạn.
ddbug

16

Đối với gEdit:

Nếu bạn đang sử dụng Ubuntu 12.04 trở lên, bạn có thể thiết lập hành vi.

Thông qua giao diện người dùng đồ họa:

  1. Chạy trình soạn thảo dconf ( dconf-editor)
  2. Chuyển đến orggnomegeditpreferenceseditor
    (hoặc chỉ tìm kiếm ensure-trailing-newline)
  3. Bỏ chọn ensure-trailing-newlinenếu bạn không muốn tự động thêm dòng mới.

Trên dòng lệnh:

  1. Mở một thiết bị đầu cuối ( ctrl+ alt+ T)
  2. nhập lệnh sau

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

    và bạn đã hoàn thành.

Tham khảo | Lỗi launchpad


1
Cảm ơn. Đó là điều tốt để biết. Tôi đã thử nó và nó hoạt động ... (+1)
Peter.O 5/12/13

Biên tập viên Pluma thì sao? (không nhìn thấy "đảm bảo-trailing-xuống dòng" cho Pluma)
ajcg

0

Nếu bạn chỉ muốn viết một tập tin dòng duy nhất, thì echo có lẽ là giải pháp dễ nhất:

echo -n "the contents of my file" > myfile
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.