VIM TIPS коротко от простого к сложному. vim examples. клавиши в vim. смена регистра букв и команды vim.


VIM examples. Примеры и подсказки в работе с редактором vim

Так как сам работаю с текстом только в vim, то опыта набралось немало.
Вот только память иногда меня все-таки подводит. =)

Поэтому сам для себя решил сделать несколько подсказок.
Ну и заодно рассказать самое основное.
Вводная часть у нас короткая, потому что про начало vim итак уже много документации.
—————————————————

Основные действия в трех словах:

vim test.txt и нажимаем i — и просто пишем.
u — отмена (назад в history)
:u — тоже отмена. U — тоже. Этих отмен как грязи! потом почитаете в манах.
:redo — повторить (вперед в history) оно же Ctrl+r
:wq — Сохранить и выйти
:w — просто сохранить данный файл.
:w ПУТЬ/ИМЯ — сохранить копию как.
:q! — не сохранять и выйти.
[[ — вверх файла
]] — вниз файла
Ну и кнопка Esc (выход из режима) у меня так же стерта, как и TAB =))
Для тех, кто не понял, проще так:
Esc i — пишем
Esc v — выделяем
Esc : — командуем
Esc / — ищем
Для подсказок по командам есть кнопка TAB. Т.е. :TAB и дальше TAB TAB TAB до просветления =)))
Если сказано, что ошибка в строке с таким-то номером, то: :12345 — переходим на строку с номером 12345
:set number — показать номера строк
:set nonumber — скрыть нумерацию строк
Ну и на :set TAB тоже много что покажет.
—————————————————

Выделение текста:

Ну тут всё понятно.
v и влево или вправо стрелками.
или Shift+v вся строка целиком.
или Ctrl+v прямоугольник. часть текста.
—————————————————

Копирование и вставка текста:

Ну нажали мы v и выделили кусок. И что дальше?
y — скопировать
Shift+p — вставить.
ну и просто p — тоже вставить. Только мне P почему-то удобнее.
d — удалить (т.е. вырезать)
—————————————————

Поиск и замена. Перейти на строку:

/ФРАЗА — поиск фразы во всем документе.
n — следующее найденное (вниз) N — предыдущее (вверх)
Замена во всем файле:

:% s /ЧТО_МЕНЯЕМ/НА_ЧТО_МЕНЯЕМ/g

в данном примере, % значит что весь файл. g значит что заменить надо не только первое совпадение, а все совпадения.
Если надо заменить не всё, а только часть текста, то выделяем кусок как показано выше и жмем «:» после этого включается командный режим и нам уже предлагают формулу для выделенного куска :'<,’> нам остается только дописать, что мы хотим с этим куском сделать.
А мы хотели поменять нецензурное слово на хорошее =)
:'<,’>s/windows/linux/g
* Дополнение: в следующий раз после того как поставили двоеточие, мы просто нажмем кнопку вверх и найдем нашу команду.
Правила замены такие же как и в любых регекспах.
Выделил я несколько строк, нажал двоеточие и написал s /$/<br>/ и конец каждой строки превратился в <br>.
^ — начало строки
$ — конец строки и так далее. (тут не статья про регулярные выражения.)
—————————————————

Окна и перемещение между окнами:

:vne ИМЯ_ФАЙЛА — поделить вертикально окно и открыть файл ИМЯ_ФАЙЛА во второй половине.
:new ИМЯ_ФАЙЛА — то же самое, но горизонтально.
:vs — один и тот же файл на 2 окна вертикально.
:sp — то же самое, но горизонтально.
перемещение между окнами vim — Ctrl+w Ctrl+w
или Ctrl+w и стрелка на какое окно перемещаться. (про hjkl я тут не говорю.)
—————————————————

Вводная часть на этом закончена. Дальше пойдут тонкости:

—————————————————

Автоматическое дополнение текста:

Вот это очень удобно.
Прям в режиме INSERT начинаем писать какое-то слово и нажимаем Ctrl+p (то же самое делает и Ctrl+n)
В итоге получаем список слов в этом документе начинающихся также.
Выбираем какое нужно и продолжаем работать.
—————————————————

Смена регистра выделеных символов:

v дальше выделяем кусок.
Потом gu если надо нижний регистр, или gU если надо верхний регистр.
—————————————————

Перемещение по тексту:

Стрелки. Да. Кнопки со стрелками. Их я чуствую (еще с Агата 7), а hjkl — нет.
Бывает очень удобно, если скобки в разных концах большого файла.
% — перейти к парной скобке.
—————————————————

#======================================
#
# Edit by Ben-Ja http://www.net4me.net
#    On Tue 15 Dec 2009 04:19:49 PM MSK
#
#======================================

Используем внешние команды при редактировании файла:

И вот мне захотелось узнать, сколько всего строк в файле. И я почему-то забыл посмотреть на статусную строку.

:!wc -l %

Что я сделал? Прально! Запустил внешнюю команду по отношению к данному файлу.
А вот еще интересный пример удобства:
Мне нужен вертикальный столбец цифр (массив делаю). И что, я буду сидеть и больше 100 раз вводить цифры?!
Хрена там! Ставлю курсор туда, куда надо вставить столбец с цифрами и даю команду:

:read !for x in `seq 0 10`; do echo $x; done

Вуаля! от 0 до 10 аккуратный столбец. И есть даже время написать об этом сюда. =)
Можно даже повесить это действие на кнопку.

Продолжение следует. =)

:wq