Новые возможности Vim 7
Тут попросили написать обзор новых возможностей в Vim 7. Ну что ж, получите… :)
Вкладки
Теперь Vim умеет работать со вкладками, как многие GUI текстовые редакторы. Конечно, и раньше можно было открыть два xterm с экземпляром vim в каждом. Но теперь можно нажать yy в одной вкладке, а p - в другой! Вместе с уже традиционной для vim возможностью разбивать каждое окно на два по вертикали или горизонтали вкладки дают потрясающую гибкость интерфейса.
Все команды, предназначенные для работы со вкладками, начинаются с :tab. Перечислю основные из них:
Команда | Что делает |
---|---|
:tabnew | Новая вкладка |
:tabclose | Закрыть вкладку |
:tabn | Перейти к вкладке |
:tabnext | Следующая вкладка |
:tabprevious | Предыдущая вкладка |
Конечно, набирать такие длинные последовательности символов каждый раз не очень-то удобно. Спасает возможность vim определять для любых действий комбинации клавиш командой map. Например, в большом количестве программ создание новой вкладки назначено на комбинацию Ctrl-T. В vim эта комбинация традиционно используется для возврата по ссылке (а переход по ссылке - Ctrl-]). На мой взгляд, это не самый удачный выбор клавиатурной комбинации. Поэтому можно написать в ~/.vimrc следующее:
map g |
Теперь переход по ссылкам вперед-назад повешен на сочетания g
А я, например, предпочел для операций с вкладками выделить отдельный префикс Ctrl-T, подобно тому как для операций с окнами выделен префикс Ctrl-W:
map |
Кроме перечисленных команд, есть еще целый ряд команд, образованных дописыванием к обычным командам vim префикса :tab. Они делают то же, что и обычные, но - в новой вкладке. Так, например, по команде :tabe filename файл filename откроется для редактирования в новой вкладке.
Еще одна важная команда, работающая со вкладками - :tabdo <команда>. Она выполняет указанную команду сразу во всех открытых вкладках. Это можно использовать, например, для замены текста сразу в нескольких открытых файлах.
Проверка орфографии
Теперь проверка орфографии встроена в vim. Чтобы она заработала, нужно взять с ftp://ftp.vim.org/pub/vim/runtime/spell/
Приведу основные клавиатурные команды, относящиеся к проверке орфографии:
Команда | Что делает |
---|---|
]s | Перейти к следующей ошбке |
[s | К предыдущей ошибке |
z= | Выдать список возможных замен |
zG | Добавить слово в словарь |
zW | Пометить слово как ошибочное |
Умное автодополнение
Vim теперь умеет автодополнение в стиле MS Visual Studio - с выпадающими списками. При редактировании исходного текста, скажем, на C++, находясь в режиме вставки, наберите первые буквы идентификатора, нажмите Ctrl-X,Ctrl-P - и получите выпадающий список с возможными вариантами продолжения (или идентификатор будет дополнен сразу, если продолжение единственно)! Самое удивительное, что выпадающие списки работают даже в консоли.
Умные отмены
Если предыдущие описанные возможности представляли собой перенос идей из других редакторов, то новая система отмен в vim - это пока что уникальная возможность, практически прорыв в нашем представлении о возможностях операции Undo.
Мы уже привыкли представлять себе последовательность действий в редакторе как обычный линейный список. Движение назад по нему возможно только с помощью отмены последнего действия. А если мы сделали действия 1, 2, 3, 4, 5, потом отменили действия 4 и 5 и сделали 6 и 7, то действия 4 и 5 безнадежно забыты.
Vim 7 изменяет это представление. Теперь действия в редакторе образуют не список, а дерево. И в упомянутой только что ситуации мы можем вернуться к состоянию, когда сделаны действия 1, 2, 3 и 4, одной командой :undo 4. А потом можем передумать и сказать :undo 7.
Разберем более наглядный примерчик. Пусть в файле у нас есть слово one. Мы добавляем к нему слово too. Потом исправляем слово too на two. Потом отменяем последнее действие, снова получаем one too. Теперь меняем слово one на me и получаем me too. Добавляем восклицательный знак. Эту последовательность действий можно представить такой диаграммой:
'one' |
Хотите теперь вернуться к ситуации, когда у вас было one two? Пожалуйста - наберите :undo 2. Передумали и хотите получить me too - наберите :undo 3.
Команда :undo с числовым аргументом полезна, когда вы помните номер изменения, к которому вы хотите вернуться. Посмотреть список последних операций с их номерами можно по команде :undolist. А можно двигаться вперед-назад по дереву отмен, нажимая g+ и g-.
Vim 7 запоминает время, когда было произведено каждое действие. И благодаря этому появляется еще одна инновационная возможность - отмена и отмена отмены по времени. Скажем, вы редактируете большой файл. Например, пишете статью. И вдруг решаете, что все, что вы изменили в ней за последние 30 минут, было сделано неправильно. Наберите :earlier 30m - и получите текст, который был у вас полчаса назад. Решили, что все-таки первые несколько правок за эти 30 минут были правильными - наберите :later 5m.
Ну что я могу сказать?
Воистину, у Vim 7 есть только один конкурент - Emacs с его ELisp-ом (правда, дерева отмен нет и там). И создатели Vim в очередной раз показали, что самый классический редактор в *nix является самым современным.
Last updated 13-Jun-2006 20:32:15 YEKST
в емаксе дерево отмен было задолго до седьмого вима
ОтветитьУдалить