linux commands
shell script
protocol
ip, tcp, smtp, ntp, ftp
telnet terminal
java and javascript
ajax web technology
documentation
howto, man, info
cisco in network
linux server
linux in home
online utility
and more more more.
python development
туе4ьу дштгч
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
При копировании материалов нашего портала, сылка на net4me обязательна.