Làm cách nào tôi có thể chặn hiển thị dòng mới của emacs trong một tệp?


11

Một trong những điều kỳ quặc của vim là nó không hiển thị một dòng trống ở cuối tệp nếu tệp kết thúc bằng ký tự dòng mới. Theo cách này, nếu tệp không kết thúc bằng một dòng mới, màn hình sẽ giống nhau, chỉ với [noeol]điểm đánh dấu trong mô hình.

Mặt khác, Emacs sẽ hiển thị dòng cuối cùng nếu tệp kết thúc bằng một dòng mới và không có gì khác.

Mặc dù hành vi của Emacs về cơ bản là hợp lý hơn, dù tốt hay xấu, tôi đã quen với điều này trước đây.

Có cách nào để ngăn chặn việc hiển thị dòng trống cuối cùng, trong khi vẫn yêu cầu tệp bị chấm dứt dòng mới không?

Emacs hành vi dòng mới

Ảnh chụp màn hình hiển thị ba cửa sổ (xem hình ảnh trong tab mới nếu quá nhỏ):

  1. Cửa sổ emacs lớn ở bên trái hexl-mode, cho bạn thấy rằng thực sự có một dòng mới ở cuối tệp (0a, nơi con trỏ được định vị).

  2. Cửa sổ Emacs ở trên cùng bên phải, với con trỏ trên dòng thứ ba trống.

  3. Cửa sổ Vim ở dưới cùng bên phải, với con trỏ trên dòng văn bản cuối cùng. Con trỏ không thể di chuyển dưới điểm này, mặc dù tệp kết thúc bằng một dòng mới (không có [noeol]điểm đánh dấu trên dòng trạng thái vim).


Dòng mới được hiển thị như thế nào? Nó hiển thị bởi vì bạn có một số chế độ nhỏ được kích hoạt? Sẽ rất hữu ích khi đặt một đoạn trích từ thiết lập của bạn hiển thị các dòng mới nhất. Một ảnh chụp màn hình đó cũng sẽ hữu ích.
Kaushal Modi

2
Bằng "hiển thị", tôi không có nghĩa là có một đại diện trực quan của dòng mới. Tôi chỉ đơn giản là tôi có thể di chuyển con trỏ của tôi đến dòng đó.
sykora

Không thể sao chép: imgur.com/IAoV7p9 Hành vi tương tự với emacs -Q, nó phải là một cái gì đó trong tệp init của bạn.
T. Verron

Hoặc chờ đợi ... bạn có nghĩa là bạn không muốn có thể di chuyển đến dòng đó, mặc dù dòng đó tồn tại? Tôi thứ hai @kaushalmodi, ảnh chụp màn hình của hành vi vim và emacs sẽ hữu ích.
T. Verron

3
@sykora Hãy thử sử dụng ảnh chụp màn hình tối thiểu . Có rất nhiều khoảng trống thừa và thừa trong ảnh chụp màn hình, làm cho nó lớn hơn nhiều so với mức cần thiết, điều này làm cho hình thu nhỏ gần như vô dụng, vì nó quá nhỏ để xem những gì đang diễn ra. Khi chụp ảnh màn hình, vui lòng thay đổi kích thước cửa sổ để phù hợp với nội dung của chúng.
lunaryorn

Câu trả lời:


1

Hãy để tôi đưa ra một đề nghị khủng khiếp để thực hiện rằng:

(defun make-eof-intangible ()
  (interactive)
  (add-hook 'post-command-hook (lambda ()
                                 (when (and (equal (point) (point-max))
                                            (looking-back "\n"))
                                   (backward-char))) t t))

(Tôi đang sử dụng một hook cục bộ vì tôi nghi rằng việc đặt nó trên toàn cầu có thể làm rối tung mọi thứ một cách nghiêm trọng, vì vậy hãy kích hoạt nó trên cơ sở mỗi bộ đệm)


1

Đây có thể không chính xác những gì bạn muốn, nhưng có thể hữu ích.

  • Tôi đang sử dụng linum-modechế độ nhỏ trong tất cả các bộ đệm của mình (được đặt (global-linum-mode t)trong tệp init của bạn). Điều này chỉ hiển thị số dòng cho các dòng có ký tự dòng mới ở cuối.

  • Một điều khác bạn có thể thích là bật whitespace-mode, theo mặc định, điều này hiển thị $các dấu màu xám trên các dòng trống, do đó cho phép bạn xem các dòng nào trống. Xem trang Wiki của Emacs tại đây .

  • Theo cách tương tự, thiết lập indicate-empty-linesđể tsẽ cho bạn thấy nơi dòng cuối cùng là (xem hướng dẫn cho các chỉ số rìa ở đây ).

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.