Як я можу придушити відображення останнього рядка emacs у файлі?


11

Однією з примх vim є те, що він не показує порожній рядок у кінці файлу, якщо файл закінчується символом нової лінії. Таким чином, якщо файл не закінчується новим рядком, дисплей збігається, лише з [noeol]маркером у моделі.

Emacs, з іншого боку, відображає останній рядок, якщо файл закінчується новим рядком, а не інакше.

Хоча поведінка Emacs є принципово більш розумною, на краще чи гірше, я звик до першого.

Чи є якийсь спосіб придушити показ останнього порожнього рядка, при цьому все ж вимагається припинення файлу нового рядка?

Нова поведінка Emacs

На скріншоті зображено три вікна (переглянути зображення на новій вкладці, якщо це занадто мало):

  1. Велике вікно emacs зліва hexl-modeвказує вам, що насправді є новий рядок в кінці файлу (0a, де розташований курсор).

  2. Вікно Emacs у верхньому правому куті з курсором у порожньому третьому рядку.

  3. Вікно Vim праворуч внизу, з курсором в останньому рядку тексту. Курсор не може переміститися нижче цієї точки, навіть якщо файл закінчується новим рядком ( [noeol]у рядку статусу vim немає маркера).


Як відображається новий рядок? Він відображається, тому що у вас включений незначний режим? Буде корисно поставити фрагмент із налаштування, який відображає останні нові рядки. Скріншот цього також буде корисний.
Каушал Моді

2
Під "відображенням" я не маю на увазі наявність візуального зображення нового рядка. Я просто маю на увазі, що я можу перемістити курсор на той рядок.
sykora

Неможливо відтворити: imgur.com/IAoV7p9 Це ж поведінка emacs -Q, це має бути щось у вашому файлі init.
Т. Веррон

Або зачекайте ... ви маєте на увазі, що ви не хочете мати можливість перейти до цього рядка, навіть якщо лінія існує? Я другий @kaushalmodi, скріншоти vim та поведінки emacs були б корисні.
Т. Веррон

3
@sykora Будь ласка, спробуйте використовувати мінімальні знімки екрана. На скріншоті багато зайвого та зайвого порожнього простору, що робить його значно більшим, ніж потрібно, що робить мініатюру майже марною, оскільки вона занадто мала, щоб побачити, що відбувається. Знімаючи скріншоти, змініть розмір вікон відповідно до їх вмісту.
місячник

Відповіді:


1

Дозвольте дати жахливу пропозицію здійснити це:

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

(Я використовую локальний гачок, тому що я підозрюю, що його встановлення в глобальному масштабі може зіпсувати речі серйозно, тому краще ввімкніть його на основі буфера)


1

Це, мабуть, не саме те, що ви хочете, але можуть бути корисними.

  • Я використовую linum-modeмінорний режим у всіх своїх буферах (встановлений (global-linum-mode t)у вашому файлі init). Це показує номери рядків лише для рядків, які мають символ нового рядка в кінці.

  • Ще одне, що може вам сподобатися - це ввімкнення whitespace-mode, за замовчуванням це показує сірі $знаки на порожніх рядках, що дозволяє вам бачити, які рядки порожні. Дивіться сторінку Wiki Emacs тут .

  • Аналогічним чином, установка indicate-empty-linesна tпокаже вам , де останній рядок (див керівництво за показниками бахромою тут ).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.