Почему 'ESC' кладет обратно курсор в энергии?

Я вставлю свою ценность за 0,02$, когда я провел довольно много лет с помощью emacs и XEmacs и затем отодвинулся к энергии. Честно говоря, я на самом деле использовал vi вполне немного приблизительно в 1990-1992, таким образом, я был знаком с его пользовательским интерфейсом.

Emacs

  • Emacs был описан как система шепелявости, которая просто, оказалось, использовалась, чтобы записать редактору, и существует мелкая частица истины в этом. Можно реализовать в значительной степени что-либо, что Вы хотите в elisp, если Вы хотите не торопиться для понимания среды. Я не могу сказать, что когда-либо узнавал его, что хорошо, но я действительно трахал материал occssionally. Emacs и Xemacs не полностью совместимы на этом уровне, таким образом, сторонние сценарии могут работать один, но не другой.

  • Было замечено, что RMS и некоторые другие знаменитые хакеры Emacs должны были удалиться с программирования из-за проблем с OOS, где Bill Joy, Bram Moolenaar и различные другие vi светила все еще в нем. Emacs строг с Вашими пальцами мизинца.

  • Emacs является намного большим количеством католической системы, чем vi и просматривается как канонический пример оболочки программного обеспечения. Наряду с Netscape, это - один из вкладов jwz в доказательство этого закона.

Одна уникальная вещь, которую я сделал с xemacs однажды, состояла в том, чтобы иметь его работающий на машине и открыть x сессию на xterminal (на самом деле старый повторно ставивший целью Sun 3/60) в другой комнате против того же буфера на том же рабочем экземпляре.

Профессионалы: Расширяемый, более мощный, чем какой-либо другой редактор, известный человеку, сформировавшейся интеграции с в значительной степени каждым главным инструментом программирования бесплатного программного обеспечения.

Недостатки: Сомнительную эргономику, elisp не легко изучить.

Vim

Disclamer - Я пошел от использования emacs к энергии приблизительно 10 лет назад, и я обычно использую энергию в Windows и основанных на Unix/Linux системах.

  • У Vi и его потомков есть очень хорошее средство макроса клавиатуры для автоматизации редактирующих заданий. Средство сценариев в энергии не так сложно как elisp, но можно создать его с поддержкой Python, Tcl, Perl и возможно некоторых других систем. Я только иногда писал сценарии (за пределами .vimrc файлов) для энергии.

  • Vim имеет меньшее место, чем emacs, но это не большая часть грандиозного предприятия в эти дни.

  • Документация Vim и справка онлайн довольно хороши. Emacs имеет довольно хорошую онлайн-документацию, но я не думаю, что это столь же всесторонне как энергия.

  • Vim наследовал изворотливый модальный пользовательский интерфейс vi, но имеет способность вести себя много как редактор без модификации теперь, когда можно перейти в режиме вставки. В Windows это может вести себя вполне так же к приложению Windows.

Профессионалы: Хорошее средство макроса клавиатуры, проходимо хорошая расширяемость и сценарии, но не столь хороший как emacs. Vim или vi-derived редакторы являются стандартными на большинстве если не весь Unix или дистрибутивы Linux общего назначения. Возможно лучшая эргономика.

Недостатки: Модальный пользовательский интерфейс чувствует себя странным для людей, привыкших к Windows UIs. Меньше проблемы с энергией в эти дни.

63
06.01.2019, 15:13
6 ответов

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

Переключение между режимами должно переместить курсор полусимволом, так сказать. i управляйте оставленными перемещениями, для помещения курсора перед символом, это было закончено. a управляйте правом перемещений. Выход из режима вставки (путем нажатия Esc) перемещает курсор, оставленный, если возможный (если это в начале строки, он переместил право вместо этого).

Я предполагаю, что вид поведения Esc имеет смысл. Часто, Вы вводите в конце строки, и там Esc может только пойти покинутый. Таким образом, общее поведение является наиболее распространенным поведением.

Думайте о символе под курсором как последний интересный символ, и команды вставки как a. Можно повторить Esc, не перемещая курсор, за исключением того, что Вы будете ударены одно право положения, если Вы запустите в начале непустой строки.

40
27.01.2020, 19:32

Визуально, это имеет больше смысла в gvim:

При редактировании курсор является промежуточным символы:
enter image description here

Когда в нормальном режиме, это сверх последнего знака:
enter image description here

Таким образом, это действительно не возвращается символ, только от того, чтобы быть между r и s к хождению r

21
27.01.2020, 19:32
  • 1
    Замечательное изображение. Честно говоря, я нахожусь в лагере, который говорит символ m должен остаться выделенным после возврата нормальному режиму... –  Steven Lu 12.06.2013, 00:48
  • 2
    Ой. ссылки изображения являются теперь битыми. –  Steven Lu 08.02.2014, 08:27
  • 3
    связывается теперь мертвый. –  Steven Lu 14.09.2016, 17:11
  • 4
    Да вручную хостинг Ваших изображений является и большим количеством работы и менее надежный, чем просто использование инструмента в редакторе скидки с цены на этом сайте. –  Steven Lu 14.09.2016, 20:19

Это поведение доступно для редактирования, как отвечено здесь, но остановитесь и думайте о том, что продолжается в течение секунды. Когда Вы находитесь в режиме вставки, Вы не на самом деле по символу, но МЕЖДУ ними. Когда Вы вставляете что-то, переходы курсора в конец того, что Вы вставили так, чтобы следующая вставленная вещь была после этого. Теперь думайте о том, если Вы просто ввели букву, затем хотели сделать что-то к ней. Esc удара поместил бы избранный курсор непосредственно по последнему знаку, который Вы вставили. Если бы это не сделало этого, то это на самом деле было бы довольно неловким.

Ситуация, о которой Вы, вероятно, думаете, состоит в том, когда Вы находитесь в режиме вставки, перемещающемся, как будто Вы были нормальным режимом и затем переключаетесь. В этом случае курсор, действительно кажется, возвращается один символ, но если Вы думаете, что способ, которым он показывает, что Вы были в режиме вставки и последней вещи, которую Вы сделали, НЕ была вставка. Возможно, необходимо ли провести больше времени в нормальном режиме?

15
27.01.2020, 19:32
  • 1
    Это не имеет смысла мне. Как Вы объясняете пятиться поведения повторных i и ESC нажатия клавиш? –  Warren Young 15.04.2011, 22:41
  • 2
    Вход в режим вставки, не вставка чего-либо, затем отъезд его не являются справедливым тестом. Почему Вы были бы в режиме вставки, если бы Вы не вставили что-то. При вставке чего-то возвращение к нормальному режиму оставляет Вас с символом, который Вы вставили выбранный. Очень интуитивный. –  Caleb 15.04.2011, 22:45
  • 3
    Это не о "ярмарке", это об объяснительной силе. Если Ваша теория операции не объясняет все поведение, или это неполно или поведение vi, непоследовательно. Я предпочитаю полагать, что vi прекрасен каждым способом и поэтому последователен. :) –  Warren Young 15.04.2011, 22:54
  • 4
    @Warren "пятиться" поведения i сопровождаемый ESC функция i и полностью независимо от ESC; а именно, когда Вы совершаете нападки i Вы просите, чтобы энергия вставила символ, который по определению означает, "вставляют символ до того, в противоположность которому я иду", a который является, "добавляют символ после этого". –  Kromey 15.04.2011, 23:14
  • 5
    В целом, после каждого изменения, когда я оставляю то изменение, я сделан с тем изменением, и следующая вещь, которую я хотел бы сделать, вероятно, включит внесение другого изменения. Таким образом, мне, после отъезда режима вставки (неважно, как я ввел его), я буду обычно предпочитать, чтобы курсор был на следующем символе, таким образом, я буду готов к своему следующему изменению, вместо того, чтобы быть готов изменить то, что я просто вставил. –  Kyle Strand 07.02.2014, 23:11

Вот мое решение.

Это - более краткая версия решения, предлагаемого на wikia странице об этом.

au InsertLeave * call cursor([getpos('.')[1], getpos('.')[2]+1])
4
27.01.2020, 19:32
  • 1
    +1 здесь также, для цитирования страницы Wiki, даже при том, что пользователь на самом деле не просил способ изменить это поведение. –  Kyle Strand 07.02.2014, 23:44
  • 2
    , который Вы отметите, роете ли Вы достаточно далеко в Vim, что много плагинов действительно полагаются на (немного неинтуитивное) поведение по умолчанию, поэтому если Вы видите, что некоторый материал случайным образом ест или искажает отдельный символ, мог бы быть вызван этим. Я не использую эту автокоманду сам; это работает хорошо, все же. –  Steven Lu 09.09.2016, 23:22

Тип Alt+L для возврата в режим командования.

Для этого не требуется перезагрузка или изменение конфигурации vim. Это работает, потому что на большинстве эмуляторов терминала Alt+KEY посылает Esc, за которым следует KEY (в xterm вам может понадобиться добавить строку Xterm*metaSendsEscape: true в ваш файл ~/.Xdefaults). Такое поведение позволяет даже "создавать" другие комбинации режимов вставки, которые работают прямо из окна - например, Alt+S в Backspace.

Кстати, наведение курсора на только что написанный символ может быть очень неудобным. Например, Escdw не удалит слово после только что вставленного текста.

6
27.01.2020, 19:32

Просто чтобы дополнить другие ответы, если i не делает именно то, что вы хотите, возможно, один из других режимов вставки будет:

  • i Начать режим вставки с курсора
  • I Вставить в начале строки
  • a Добавить после курсора
  • A Добавить в конец строки
  • o Открыть (добавить )пустая строка под текущей строкой (нет необходимости нажимать возврат)
  • O Открыть пустую строку над текущей строкой
  • ea Добавить в конец слова
2
26.11.2020, 23:14

Теги

Похожие вопросы