Остановить emacs от переноса 80 строк столбца в терминале 80 столбцов? - PullRequest
9 голосов
/ 23 августа 2011

В терминале шириной 80 столбцов emacs переносит 80 строк столбцов, добавляя обратную косую черту в 80-й столбец. Есть ли способ указать emacs использовать все 80 столбцов моего терминала и не переносить строки, пока они не достигнут 81 символа?

Ответы [ 4 ]

4 голосов
/ 23 августа 2011

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

  • Если вы просто хотите, чтобы дисплей визуально переносил больше нуля символов до границы окна, и, таким образом, избегайте обратной косой черты везде, какими бы длинными ни были ваши логические строки, вы можете использовать longlines-mode :

    В отличие от режима Visual Line, режим Long Lines разбивает длинные строки в столбце заполнения (см. Команды заполнения), а не на правый край окна. Чтобы включить режим длинных линий, введите M-x longlines-mode. Если текст полон длинных строк, это также сразу «оборачивает» их всех.

    Тогда нужно только правильно настроить столбец заполнения, используя либо глобальные настройки (.emacs, хотя вы, вероятно, хотите использовать особый режим-ловушка для этого конкретного случая), локальные настройки (файл переменная, dir-locals) или C-u 79 C-u C-x f для установки переменной fill-column в 79. Таким образом, строки 79 символы или выше будут перенесены, но перед тем, как дотронуться до правого края 80-символьное окно (и, следовательно, никогда не оставляющее уродливый символ обратной косой черты). Ваш файл будет не тронут.

  • Если вы просто хотите, чтобы в 80-символьных строках не происходило визуального переноса, и, таким образом, не хотите, чтобы 80-й логический символ визуально отображался ниже первого, есть два Возможные ответы:

    • либо вы работаете в среде, где вам не обязательно оборачивать логически до или до 80 символов, и вы хотите увидеть конец те 81+ строк где-то на вашем экране (то есть вы хотите визуальную переноску, но на несколько символов выше ширины окна), тогда я не знаю, как это сделать он .

    • или вы хотите логически остановить свои строки на 80 символов (например, вы иметь автоматическое заполнение и заполнить столбец на 80), и если вам случится в строках по 81 и более символов, вам не нужно видеть их окончание. В этом случае активируйте режим усечения (toggle-truncate-lines).

  • Если проблема касается последнего символа вашего окна, и вы действительно хотите 80-й логический символ вашей строки, который будет отображаться на 80-м визуальном символе вашего окна , хотя Боюсь, я не знаю как. Либо вы усекаете строки (как указано выше), и последний символ вашего окна будет $, либо вы позволите emacs сделать свое дело , а последний символ будет иметь обратную косую черту.

Обратите внимание, что при проверке перенос автозаполнения (но также и в режиме longlines-mode, поскольку он является его визуальным эквивалентом) будет происходить только на границах слов.

2 голосов
/ 23 августа 2011

Один из вариантов - установить перенос на 81, а не на 80.

M-x set-fill-column RET 81

Другой вариант, возможно, лучший выбор, - определить переменную overflow-newline-into-fringe как t,Попробуйте один раз, вручную:

M-x set-variable RET overflow-newline-into-fringe RET t

Любой из них может быть установлен по умолчанию.Вы можете сделать это через M-x customize или отредактировав свой файл .emacs.Публикуйте снова, если вам нужна помощь.

Кстати, вы используете emacs в графической или терминальной среде?В графической среде я часто просто увеличиваю окно, если у меня длинные строки.Или я могу включить усечение строки с горизонтальной полосой прокрутки.


добавлено позже

С добавленной информацией, что вы запускаете emacs в режиме терминала, как вы обнаружили, ни одна из этих опций не работает.Я попробовал пример запуска emacs в putty, где я могу изменить размер окна, и emacs сразу его подберет.Таким образом, я мог бы увеличить размер до 81 столбца, и мои строки из 80 столбцов остались без изменений без продолжения.Я не уверен, какое значение TERM вы присвоили с помощью tmux, но вы можете рассмотреть возможность создания пользовательского типа терминала (termcap или terminfo), который поддерживает 81 столбец.Я только кратко взглянул на tmux, но заметил, что вы можете изменять размеры панелей в терминале.

Теперь, из любопытства, что является основным мотиватором для вас при использовании tmux?Я думаю, что возможность возобновления будет полезна.Однако я обнаружил, что другие функции не так полезны, потому что в среде X-Window открыть больше терминалов дешево и легко, или, если я использую замазку, я могу создать больше таких.Что касается использования emacs, независимо от того, работаю ли я под X-Window или MS-Windows, я просто создаю столько фреймов, сколько захочу, и с этим довольно легко работать.Итак, есть ли что-то еще, что заинтересовало бы вас использовать tmux?

0 голосов
/ 31 октября 2017

Через шесть лет после предыдущих ответов и обходного пути, которое я до сих пор использую, используется 81 окно шириной.

К сожалению, окна шириной 80, которые переносятся «правильно», невозможно из-за злых бахромчатых персонажей. Emacs требует, чтобы последний (дополнительный) символ имел исключительное использование последнего столбца. Аргументом для этого является необязательный дополнительный символ, который неоднозначен. Я мечтаю о том дне, когда кто-нибудь представит патч, который сделает необязательный характер необязательным и, возможно, решит двусмысленность с цветом фона.

0 голосов
/ 23 августа 2011

Я не думаю, что это вообще возможно, потому что emacs нужен хотя бы один символ, чтобы указать, что строка продолжается в следующей строке (обтекания), хотя я не уверен, потому что в emacs так много опций ...Вместо этого вы могли бы выбрать «Перенос слов (режим визуальной линии)» в меню «Параметры» (или клавиатуры):

Mx режим визуальной строки RET

Это делает поток более естественным, без отображения (по крайней мере, в текстовых режимах) указания обтекания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...