Немодальные и модальные редакторы

37

Я только начал изучать Linux, и весь мой предыдущий опыт программирования был основан на платформе Windows. Я наткнулся на редактор Vim и прочитал, что это модальный редактор в отличие от блокнота, который называется немодальным редактором.

Не могли бы вы объяснить, в чем разница между немодальными и модальными редакторами в целом?

Фанат
источник

Ответы:

37

Обычный «немодальный» редактор похож на «Блокнот» в Windows: есть только один режим, в котором вы вводите текст.

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

В статье Википедии о Vi есть хорошая статья о модальном интерфейсе.

Первичная привлекательность, изначально необходимая на заре Unix-вычислений до широкого распространения мыши, - это полностью клавиатурное редактирование. Этот подход в настоящее время получил более широкое распространение в Unix-land, например, в различных браузерах .

Этот удивительный проект, Vim Clutch , обеспечивает четкую визуализацию концепции переключения между режимами.


1. Есть также два других режима: командный режим для ввода команд, как в оболочке, и визуальный режим при выборе текста для работы.

jasonwryan
источник
3
Не забудьте режим командной строки и визуальный режим.
Бернхард
Хорошая точка зрения. Для простоты я остановился на основных режимах, но я добавлю их в качестве сноски.
Джейсонвриан
ссылка "Vim Clutch" мертва
Раши
@Раши исправлена ​​...
Джейсонвриан
4

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

Интерфейс, который не использует режимы, известен как немодальный интерфейс. [1] Немодальные интерфейсы намереваются избежать ошибок режима [2], делая невозможным их фиксацию пользователем.

Pramod
источник
4
Похоже, что это скопировано из Википедии (если вы не PRAMOD написал эту статью, я не знаю). Если так, то не должна ли эта статья цитироваться?
Гильденстерн
0

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

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

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

Эта часть принятого ответа совершенно неверна:

Первичная привлекательность, изначально необходимая на заре Unix-вычислений до широкого распространения мыши, - это полностью клавиатурное редактирование.

Редактирование только с клавиатуры работает просто отлично без явного переключения режимов. Вы можете перемещать курсор и выделять области текста комбинациями клавиш. Например, Ctrl + A, чтобы перейти к началу строки, Ctrl + Spc, чтобы установить метку, а затем Ctrl + E, чтобы перейти к концу строки, выбирая всю строку.

kevincasey
источник