Emacs: автоматически удерживать столбец курсора при перемещении вверх / вниз (при необходимости добавьте пробелы) - PullRequest
0 голосов
/ 11 мая 2018

Представьте, что я редактирую этот текст:

this is my long line| short line this is my other long line

Как удерживать курсор на текущем столбце при перемещении вверх и вниз (это обычное поведение для многих текстовых редакторов)?

Как и в режиме изображения, но без других функций (например, когда C-e нажимает, курсор должен быть перемещен к фактическому концу строки)

PS Этот вопрос выглядит дубликатом для других, но, вероятно, это не так.

Upd1: есть проблемы с режимом художника и режимом изображения:

  • добавить лишние пробелы, когда я перемещаю курсор за конец строки (и документ стал «измененным». Не круто)

  • C-e фактически не перемещает курсор в конец строки

  • перемещение курсора работает с сюрпризами в режиме visual-line (например, не перемещается в «предыдущую» часть »длинной строки

Upd2: set-goal-column - это круто, но не понятно, каким образом его можно использовать. Я просто хочу переместить курсор визуально вниз от текущей позиции столбца, где находится курсор.

Ответы [ 4 ]

0 голосов
/ 15 мая 2018

Режим четверти плоскости также был предложен как близкое решение

0 голосов
/ 11 мая 2018

Использование set-goal-column по-прежнему заставляет курсор изменять столбцы, чтобы они соответствовали концу более коротких строк при перемещении вверх и вниз.

Вы можете попробовать artist-mode.Казалось, что он соответствует вашим требованиям в правильной обработке конца строки, наряду с другим движением курсора, но сохраняет тот же столбец, добавляя пробелы, необходимые для перемещения вверх или вниз.

  • Крис
0 голосов
/ 14 мая 2018

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

(defvar ar-move-line-this-column nil)

(defun ar-move-line-keep-column-intern (arg)
  (unless (eq last-command this-command)
    (setq ar-move-line-this-column (current-column)))
  (forward-line arg)
  (while (and (not (eolp)) (< (current-column) ar-move-line-this-column))
    (forward-char 1)))

(defun ar-forward-line-keep-column (&optional arg)
  "Go to current column of next line.

If line is shorter, go to end of line"
  (interactive "p")
  (ar-move-line-keep-column-intern (or arg 1)))

(defun ar-backward-line-keep-column (&optional arg)
  "Go to current column of line above.

If line is shorter, go to end of line"
  (interactive "p")
  (ar-move-line-keep-column-intern (- arg)))
0 голосов
/ 11 мая 2018

set-goal-column, привязанный к Cx Cn установит текущий столбец в качестве целевого столбца при перемещении вверх или вниз.

Вы можете отменить эту функцию с префиксным аргументом Cu Cx Cn .

Документация здесь .

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