LINUX.ORG.RU

[Emacs] Вертикальное перемещение курсора без рывков по горизонтали


0

0

Рассмотрим такой текст:

qwerty1
as2
zxcvbn3

Если курсор стоит на символе "1" и пару раз нажать стрелку вниз - то он встанет возле двойки, а потом на тройку. Т.е. уйдёт влево, а потом вернётся.
Как сделать так, чтобы курсор не метался влево-вправо при вертикальном перемещении? Т.е. чтобы с цифры "1" встал в позицию точно под "1", а затем на "3"?

Re: [Emacs] Вертикальное перемещение курсора без рывков по горизонтали

cua-set-rectangle-mark из cua-mode не подходит?

madepa ()

Re: [Emacs] Вертикальное перемещение курсора без рывков по горизонтали

Вообще почти все редакторы страдают таким античеловеческим поведением. СР УВЧ, фигли.

pained ()

Re: [Emacs] Вертикальное перемещение курсора без рывков по горизонтали

Поинт не может быть под 1, если там ничего нет (пробела, например).

Sphinx ★★☆☆ ()

Re: [Emacs] Вертикальное перемещение курсора без рывков по горизонтали

> cua-set-rectangle-mark из cua-mode не подходит?

Близко, но не совсем то. cua-set-rectangle-mark - это прямоугольное выделение. С этим я хотел разбираться позже, но частично узнал уже сейчас :-)
Однако выделение выделением, а хочется, чтобы и при простом перемещении курсор не носился туда-сюда перед глазами :-)

> Поинт не может быть под 1, если там ничего нет (пробела, например).

Значит, редактор должен поставить туда пробелы, когда нужно. Т.е. когда курсор поставили под 1 и напечатали там что-то.
Редактор в ДОС Навигаторе с этим отлично справляется.

sergey_feo ()

Re: [Emacs] Вертикальное перемещение курсора без рывков по горизонтали

есть режим для рисования картинок - picture-mode

там есть такие функции:
picture-move-down
picture-move-up

сделай на них биндинг, если будешь часто использовать
или вызывай из минибуера с параметром равным нужному
количеству строк
M-6 M-x picture-move-down
это сместит курсор на 6 позиций вниз

перед использованием убедись что библиотека уже загружена
или добавь в .emacs строку:
(require 'picture)

h1t ()

Re: [Emacs] Вертикальное перемещение курсора без рывков по горизонтали

> picture-mode

Попробовал режим picture-mode "целиком" в XEmacs. Почти то, что надо. Но не совсем.

Да, функции picture-move-down и picture-move-up
позволяют смещаться, не дёргаясь, вверх-вниз на 1-n позиций. При этом сразу вставляются пробелы/табы. Они остаются при сохранении файла. Т.е. файл замусоривается. Это первая проблема. Можно ли как-то почистить файл при сохранении?

В режиме picture-mode нормально работают курсорные клавиши вверх-вниз, но по-прежнему плохо работают влево-вправо, страница вверх, страница вниз. Как будто и нет для них никакого picture mode. Влево-вправо вроде лечится : в picture-mode есть picture-movement-left и right. Странно, что они не поставлены в этом режиме на стрелки. А вот что делать с перелистыванием по страницам - непонятно. И это вторая проблема.

Кстати, ещё пара странностей picture-mode:
- выделение не является ни обычным Емаксовым, ни выделением квадратным блоком. Получается что-то среднее, одинаково плохо подходящее и для рисунков, и для текста.
- клавиши вверх-вниз вставляют не только пробелы, но и табы. При перемещении по этим местам с помощью стрелок влево-вправо курсор здорово скачет через табы, очень "помогая" рисовать.

Эх, неужели за более чем 30 лет Емакс стал всем чем угодно, но только не приличным текстовым редактором? :-)

sergey_feo ()

Re: [Emacs] Вертикальное перемещение курсра без рывков по горизонтали

1. избавиться от табов в файле

2. почистить лишние пробелы:
добавить в хук сохранения файла вызов функции
delete-trailing-whitespace

3. заменить функции пролистывания страниц на свои с использованием
функций из picture-mode

а еще лучше забить на эту фичу.
она реально упрощает жизнь?

h1t ()

Re: [Emacs] Вертикальное перемещение курсра без рывков по горизонтали

Да, похоже, так и надо сделать, если среди тысячи опций Емакса всё-таки не найдётся готовой :-)

А насчёт того, упрощает ли эта фича жизнь - отсутствие фичи осложняет, это точно. Не поработав с ней, не замечаешь, что она может быть полезна. А оказавшись без неё - сразу замечаешь, насколько она была хороша.

Всем спасибо :-)

sergey_feo ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.