Я вставлю свою ценность за 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. Меньше проблемы с энергией в эти дни.
В режиме вставки курсор между символами, или перед первым или после последнего знака. В нормальном режиме курсор по символу (новые строки не являются символами с этой целью). Это несколько необычно: большинство редакторов всегда помещает курсор между символами и имеет большую часть действия команд на символе после (не, строго говоря, под) курсор. Это, возможно, частично вследствие того, что перед графический интерфейсами пользователя, текстовые терминалы всегда показывали курсор на символе (подчеркивание или блок, возможно, мигая). Эта абстракция перестала работать в режиме вставки, потому что это требует еще одного положения (сообщения по сравнению с заборами).
Переключение между режимами должно переместить курсор полусимволом, так сказать. i
управляйте оставленными перемещениями, для помещения курсора перед символом, это было закончено. a
управляйте правом перемещений. Выход из режима вставки (путем нажатия Esc) перемещает курсор, оставленный, если возможный (если это в начале строки, он переместил право вместо этого).
Я предполагаю, что вид поведения Esc имеет смысл. Часто, Вы вводите в конце строки, и там Esc может только пойти покинутый. Таким образом, общее поведение является наиболее распространенным поведением.
Думайте о символе под курсором как последний интересный символ, и команды вставки как a
. Можно повторить Esc, не перемещая курсор, за исключением того, что Вы будете ударены одно право положения, если Вы запустите в начале непустой строки.
Визуально, это имеет больше смысла в gvim:
При редактировании курсор является промежуточным символы:
Когда в нормальном режиме, это сверх последнего знака:
Таким образом, это действительно не возвращается символ, только от того, чтобы быть между r
и s
к хождению r
m
должен остаться выделенным после возврата нормальному режиму...
– Steven Lu
12.06.2013, 00:48
Это поведение доступно для редактирования, как отвечено здесь, но остановитесь и думайте о том, что продолжается в течение секунды. Когда Вы находитесь в режиме вставки, Вы не на самом деле по символу, но МЕЖДУ ними. Когда Вы вставляете что-то, переходы курсора в конец того, что Вы вставили так, чтобы следующая вставленная вещь была после этого. Теперь думайте о том, если Вы просто ввели букву, затем хотели сделать что-то к ней. Esc удара поместил бы избранный курсор непосредственно по последнему знаку, который Вы вставили. Если бы это не сделало этого, то это на самом деле было бы довольно неловким.
Ситуация, о которой Вы, вероятно, думаете, состоит в том, когда Вы находитесь в режиме вставки, перемещающемся, как будто Вы были нормальным режимом и затем переключаетесь. В этом случае курсор, действительно кажется, возвращается один символ, но если Вы думаете, что способ, которым он показывает, что Вы были в режиме вставки и последней вещи, которую Вы сделали, НЕ была вставка. Возможно, необходимо ли провести больше времени в нормальном режиме?
i
и ESC
нажатия клавиш?
– Warren Young
15.04.2011, 22:41
i
сопровождаемый ESC
функция i
и полностью независимо от ESC
; а именно, когда Вы совершаете нападки i
Вы просите, чтобы энергия вставила символ, который по определению означает, "вставляют символ до того, в противоположность которому я иду", a
который является, "добавляют символ после этого".
– Kromey
15.04.2011, 23:14
Вот мое решение.
Это - более краткая версия решения, предлагаемого на wikia странице об этом.
au InsertLeave * call cursor([getpos('.')[1], getpos('.')[2]+1])
Тип Alt+L для возврата в режим командования.
Для этого не требуется перезагрузка или изменение конфигурации vim. Это работает, потому что на большинстве эмуляторов терминала Alt+KEY посылает Esc, за которым следует KEY (в xterm вам может понадобиться добавить строку Xterm*metaSendsEscape: true
в ваш файл ~/.Xdefaults). Такое поведение позволяет даже "создавать" другие комбинации режимов вставки, которые работают прямо из окна - например, Alt+S в Backspace.
Кстати, наведение курсора на только что написанный символ может быть очень неудобным. Например, Escdw не удалит слово после только что вставленного текста.
Просто чтобы дополнить другие ответы, если i не делает именно то, что вы хотите, возможно, один из других режимов вставки будет: