View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000107 | Wishes | Editor | public | 2006-03-31 00:11 | 2017-10-25 17:26 |
Reporter | Raistlin | Assigned To | |||
Priority | normal | Severity | feature | Reproducibility | always |
Status | new | Resolution | open | ||
Summary | 0000107: Поведение при удалении части строки, превышающей ширину экрана | ||||
Description | От AVB. Если выделить конечную часть строки, длина которой (части, в смысле) превышает ширину экрана, и удалить её, то курсор оказывается в первой позиции экрана и оставшаяся (начальная) часть строки остаётся за его левым краем. Желательно же, чтобы после удаления курсор оказывался либо в последней позиции экрана (если оставшаяся часть строки не меньше ширины экрана), либо в позиции, равной длине оставшейся части (т. е. чтобы оставшаяся часть была видна полностью). | ||||
Tags | No tags attached. | ||||
Build | |||||
|
Так, теперь по-русски, pls. По шагам. Какой файл открыть, куда стать, откуда начинать выделение, какие блоки (постоянные или нет), ... (и еще безобразное количество вопросов) :-( |
|
Создай файл, содержащий одну длинную строку: 40 символов "а" и за ними 120 символов "б". Выдели все символы "б" (курсор после выделения должен стоять в конце строки) и удали по Ctrl-D. Получишь пустой экран и курсор в первой позиции. Хочется же, чтобы 40 оставшихся символов были видны, а курсор стоял, соответственно, в 41 позиции (считая позиции с 1). Блоки, естественно :-), постоянные. |
|
Текущее поведение вполне осмысленно, не вижу причин его менять. Предлагаю закрыть тикет. |
|
В чем осмысленность? Курсор на месте не остается, экран - тоже (заметно, если перед тестовой строкой вставить еще одну длинную из разных символов). |
|
>В чем осмысленность? Экран сдвигается минимальное. Так, чтобы стала видимой позиция курсора. Это поведение логично, и ровно то же происходит при всех операциях, перемещающих курсор. |
|
Если все равно двигать, почему не подвинуть с большим толком? Сейчас обычное действие после удаления здорового куска строки - Left или Ctrl-Left. Не потому, что надо чего-то там редактировать, а потому что надо просто увидеть, что в ней осталось. И смысл в этом лишнем движении? |
|
>Если все равно двигать, почему не подвинуть с большим толком? Я исхожу из того, что поведение редактора при перемещении курсора должно быть предсказуемым и однотипным (во всех операциях, затрагивающих перемещения курсора). Даже если рассмотреть только одну из операцию - удаление, то и её можно произвести массой способов. CtrlD, Del, BS, ShiftDel, CtrlX, CtrlT, CtrlDel, а при непостоянных блоках вообще любая клавиша. Добавим сюда поиск/замену, и изменения через АПИ (которых аж 2). Удаляться может вся конечная часть, а может кусок из середины. Допустим позицию экрана и стоило бы как-то корректировать, но я лично затрудняюсь формализовать КАК именно, учитывая всевозможные условия. >Сейчас обычное действие после удаления здорового куска строки - Left или Ctrl-Left. CtrlK есть из коробки. Остальное макросами. |
|
>Желательно же, чтобы после удаления курсор оказывался либо в последней позиции экрана (если оставшаяся часть строки не меньше ширины экрана) Вот это как понимать? На примере из описания, что должно быть видно на экране после удаления? |
|
> что должно быть видно на экране после удаления? > чтобы 40 оставшихся символов были видны, а курсор стоял, соответственно, в 41 позиции (считая позиции с 1). Другой пример. Ширина окна Far - 80. В строке 8 раз повторяется группа символов "0123456789", затем идет 120 символов "b". Выделяем от первого до последнего "b", удаляем. Курсор должен оказаться в последней (81-й в строке, 80-й на экране) позиции. Первый "0" - за левой границей экрана. |
|
Тогда к уже сказаному добавить мне нечего. |
|
>при непостоянных блоках вообще любая клавиша Стирает?! >поведение редактора при перемещении курсора должно быть предсказуемым и однотипным (во всех операциях, затрагивающих перемещения курсора) Удаление блока не перемещает курсор. Оно двигает невыделенные части строки (строк) друг относительно друга. >позицию экрана и стоило бы как-то корректировать, но я лично затрудняюсь формализовать КАК именно, учитывая всевозможные условия Она уже корректируется - сдвигается так, чтобы курсор оказался в 1-й позиции экрана, а не за его левой границей. Но это довольно бестолковое корректирование: вся оставшаяся в строке полезная информация остается за кадром. Я предлагаю корректировать так, чтобы на экране, напротив, отображался максимум полезной информации. Вот и все отличие от текущего поведения. >CtrlK есть из коробки. Какое отношение Ctrl-K имеет к Left или Ctrl-Left? |
|
>Стирает?! У вас не так? >Удаление блока не перемещает курсор Вынужден не согласиться. >Я предлагаю корректировать так, чтобы на экране, напротив, отображался максимум полезной информации. А я предлагал взглянуть на эту ситуацию как на частный случай, но исходя из предыдущей цитаты я уже не рассчитываю на понимание. >Какое отношение Ctrl-K имеет к Left или Ctrl-Left? В описании тикета ничего не сказано о Left или Ctrl-Left Но упомянутая там задача может быть решена с помощью CtrlK, не используя выделение. Если нужно удалить не весь "хвост", а середину, то да, CtrlK не поможет. Но есть макросы, поэтому всё в ваших руках. |
|
> У вас не так? Понял, что имелось в виду. Так. Хотя и не совсем любая. >А я предлагал взглянуть на эту ситуацию как на частный случай Давайте взглянем. Например, будем выделять блок не до конца строки, а оставляя в конце 3 символа. Что имеем? После удаления блока курсор - в 1-й экранной позиции, на экране - 3 символа из строки. А за левой границей - еще до фига. Что мешает установить курсор не на 1-ю, а на 77-ю позицию? Ведь все равно экранная позиция курсора относительно первоначальной поменялась? |
|
>Давайте взглянем Ещё шире. Например, ширина экрана 80 символов, в текущей строке 81 символ, а курсор в позиции 165. Что произоисходит при нажатии клавиши End? |
|
Предлагаю закрыть. |
|
> Ещё шире. Например, ширина экрана 80 символов, в текущей строке 81 символ, а курсор в позиции 165. Что произоисходит при нажатии клавиши End? Прыгает в строковую позицию 82, она же экранная позиция 1. А хотелось бы, что она была экранной позицией 80. > Предлагаю закрыть. Не согласен. |
|
Это свидетельствует о том, что пожелание в описании тикета сформулировано не полностью, нет? |
Date Modified | Username | Field | Change |
---|---|---|---|
2006-03-31 00:11 | Raistlin | New Issue | |
2006-04-04 06:36 | vskirdin | Note Added: 0000108 | |
2006-04-04 09:20 | Raistlin | Note Added: 0000112 | |
2006-04-04 09:23 | Raistlin | Note Edited: 0000112 | |
2013-02-03 00:34 | alexy | Severity | minor => feature |
2014-09-03 09:15 | JohnDoe | Note Added: 0012978 | |
2014-09-03 09:55 | Raistlin | Note Added: 0012980 | |
2014-09-03 11:35 | JohnDoe | Note Added: 0012982 | |
2014-09-03 11:53 | Raistlin | Note Added: 0012983 | |
2014-09-03 12:26 | JohnDoe | Note Added: 0012984 | |
2014-09-03 12:27 | JohnDoe | Note Edited: 0012984 | |
2014-09-03 12:29 | JohnDoe | Note Edited: 0012984 | |
2014-09-03 12:31 | JohnDoe | Note Added: 0012985 | |
2014-09-03 13:25 | Raistlin | Note Added: 0012987 | |
2014-09-03 13:54 | JohnDoe | Note Added: 0012988 | |
2014-09-03 15:26 | Raistlin | Note Added: 0012989 | |
2014-09-03 15:55 | JohnDoe | Note Added: 0012990 | |
2014-09-03 15:57 | JohnDoe | Note Edited: 0012990 | |
2014-09-03 16:53 | Raistlin | Note Added: 0012991 | |
2014-09-04 08:03 | JohnDoe | Note Added: 0012992 | |
2017-10-19 15:16 | JohnDoe | Note Added: 0015713 | |
2017-10-25 10:57 | Raistlin | Note Added: 0015744 | |
2017-10-25 16:48 | JohnDoe | Note Added: 0015746 |