Vim: памятка

Вот нашел в одной из подписок под заголовком - 100 команд vim, которые должен знать каждый программист! надеюсь памятка будет полезной, поэтому и выкладываю здесь.

Поиск
/word   Искать слово “word” сверху вниз
?word   Искать слово “word” снизу вверх
/jo[ha]n>   Искать “john” или “joan”
/\< the Искать слова, начинающееся на “the”
/the\>  Искать слова, заканчивающиеся на “the”
/\< the\>   Искать “the”
/\< …. \>   Искать слова из четырех символов
/fred\|joe  Искать “fred” или “joe”
/\<\d\d\d\d\>   Искать 4 цифры подряд
/^\n\{3}    Искать 3 пустые строки
:bufdo /searchstr/  Искать во всех открытых файлах
Замена
:%s/old/new/g   Заменить все вхождения “old” на “new”
:%s/old/new/gw  Заменить все вхождения “old” на “new” с запросом подтверждения
:2,35s/old/new/g    Заменить все вхождения “old” на “new” между 2 и 35 строками
:5,$s/old/new/g Заменить все вхождения “old” на “new” начиная с 5 строки и до конца файла
:%s/^/hello/g   Добавить “hello” в начало каждой строки
:%s/$/Harry/g   Добавить “Harry” в конец каждой строки
:%s/onward/forward/gi   Заменить “onward” на “forward” с учетом регистра
:%s/ *$//g  Убрать все пробелы
:g/string/d Удалить все строки, содержащие “string”
:v/string/d Удалить все строки, не содержащие “string”
:s/Bill/Steve/  Заменить первое вхождение “Bill” на “Steve” в текущей строке
:s/Bill/Steve/g Заменить все вхождения “Bill” на “Steve” в текущей строке
:%s/\r//g   Убрать символ возврата каретки (Такие тексты обычно приходят от windows-пользователей)
:%s#>[^<]\+>##g Очистить текст от HTML-тегов
:%s/^\(.*\)\n\1$/\1/    Удалить строки, повторяющиеся дважды
Ctrl+a  Увеличить число под курсором на единицу
Ctrl+x  Уменьшить число под курсором на единицу
ggVGg?  Преобразовать текст в Rot13
Регистр
Vu  Перевести строку в нижний регистр
VU  Перевести строку в верхний регистр
g~~ Инвертировать регистр
vEU Перевести слово под курсором в верхний регистр
vE~ Инвертировать регистр слова
ggguG   Перевести весь текст в нижний регистр
:set ignorecase Регистронезависимый поиск
:set smartcase  Игнорировать регистр при поиске, если в искомом выражении нет символов верхнего регистра
:%s/\<./\u&/g   Перевести первую букву каждого слова в верхний регистр
:%s/\<./\l&/g   Перевести первую букву каждого слова в нижний регистр
:%s/.*/\u&  Перевести первую букву первого слова в каждой строке в верхний регистр
:%s/.*/\l&  Перевести первую букву первого слова в каждой строке в нижний регистр
Чтение/запись файлов
:1,10 w outfile Записать в outfile с первой по десятую строки
:1,10 w >> outfile  Добавить в outfile с первой по десятую строки
:r infile   Вставить содержимое файла infile
:23r infile Вставить содержимое файла infile после 23 строки
Навигация по ФС
:e .    Открыть встроенный файл-менеджер
:Sex    Разбить окно и открыть встроенный файл менеджер
:browse e   Графический файл-менеджер
:ls Список буферов
:cd ..  Перейти в родительскую директорию
:args   Список открытых файлов
:args *.php Открыть все файлы с расширением *.php
:grep expression *.php  Показать список файлов с расширением php, содержащих в имени expression
gf  Открыть файл с именем, равным слову, находящемуся под курсором
Взаимодействие с ОС
:!pwd   Выполнить команду pwd и вернуться
!!pwd   Выполнить команду pwd и вставить результат в редактор
:sh Открыть шелл
$exit   Вернуться в редактор из шелла
Выравнивание
:%!fmt  Выровнять все строки
!}fmt   Выровнять все строки в текущей позиции
5!!fmt  Выровнять следующие 5 строк
Вкладки
:tabnew Создать новую вкладку
gt  Перейти на следующую вкладку
:tabfirst   Перейти на первую вкладку
:tablast    Перейти на последнюю вкладку
:tabm n(position)   Изменить порядок вкладок
:tabdo %s/foo/bar/g Выполнить команду во всех вкладках
:tab ball   Поместить все открытые файлы во вкладки
Разделение окна
:e filename Редактировать filename в текущем окне
:split filename Разделить окно и открыть filename
ctrl-w + стрелка ВВЕРХ  Переместить курсор в верхнее окно
ctrl-w ctrl-w   Переместить курсор в следующее окно
ctrl-w_ Максимизировать текущее окно
ctrl-w= Подогнать окна по размеру
10 ctrl-w+  Увеличить текущее окно на 10 строк
:vsplit file    Вертикально разделить окно
:sview file Разделить окно и открыть file только для чтения
:hide   Закрыть текущее окно
:only   Закрыть все окна, кроме текущего
:b 2    Открыть #2 в текущем окне
Автодополнение
Ctrl+n Ctrl+p (в режиме вставки)    Дополнить слово
Ctrl+x Ctrl+l   Дополнить строку
:set dictionary=dict    Установить словарь
Ctrl+x Ctrl+k   Дополнение из словаря
Метки
mk  Пометить текущую позиция как k
‘k  Перейти к метке k
d’k Удалить все до метки k
Сокращения
:ab mail mail@provider.org  Определить mail как сокращение от mail@provider.org
Отступы
:set autoindent Включить автоматическую расстановку отступов
:set smartindent    Включить “умную” расстановку отступов
:set shiftwidth=4   Установить отступ равный 4 пробелам
ctrl-t, ctrl-d  Убрать/добавить отступ в режиме вставки
<<  Добавить отступ
>>  Убрать отступ
Подсветка синтаксиса
:syntax on  Включить подсветку
:syntax off Выключить подсветку
:set syntax=perl    Установить режим подсветки

ссылка на оригинал: http://boombick.org/blog/posts/84#more-84

спасибо, надо будет распечатать, повесить на стенку и повторять аки мантру…

Еще несколько полезных команд
Командный режим:

:reg                 показать регистры
"["0-9]p             вставить содержимое регистра (при удалении текста удаляемый
                     текст помещается в регистр ", регистр 0 -> 1, 1 -> 2 и т.д.)
"*p                  вставить из буффера обмена (мышь)
Shift+K              показать man по слову на котором находится курсор
:set list/nolist     показать/скрыть символы табуляции, конца строки и т.д.
:set number/nonumber показать/скрыть строки

Режим ввода:

Ctrl+x Ctrl+f дополнить путь в файловой системе

не программист я :slight_smile: поэтому с рождения использую nano -легко, просто, понятно; тяжела жиСть программиста :)) столько букаф надо знать.

leomuz none писал(а):

не программист я :slight_smile: поэтому с рождения использую nano -легко, просто, понятно; тяжела жиСть программиста :)) столько букаф надо знать.

Легко,просто и понятно то-что знаешь. Вы наверное имели введу не очевидность вима при знакомстве с ним, и более очевидное использование nano без подготовки и чтения документации.Vim позволяет многие вещи делать гораздо быстрей чем в других редакторах,благодаря режимам и большому количеству команд,возможности его расширяются плагинами итд., зная vim можно сократить количество телодвижений,затрачиваемое время работы, да и просто сделать работу приятней…использую vim по привычке,он был у меня первым редактором когда мне показали linux, вимером себя назвать не могу,но нахожу его работу очень удобной. И находил его удобным даже тогда - когда использовал его минимум i,a,u,:wq,:q!,/ и пользовался лишь стрелочками да такими клавишами как ентер,делит и бэкспэйс… потом мне стало интересно,а как же удалить строку/строки,а как бы вот перенести строку или несколько строк вниз или вверх,пришли на помощь такие вот команды как dd,dXd, o,O, Xo,xO(Xx - число строк)всего то две,три клавиши нажать, а что говорит об удаление символов, вместо многократного нажатия клавиши del или удержания ее - иногда удаляя лишнее, нажимаем две клавиши Xx(где X число символов),удаление слов - dXw (X - число слов), и много много всяких плюшек,разве все перечислишь, идем читать документацию… :slight_smile:

А я знакомился с Vim по вот этой страничке: http://www.gentoo.org/doc/ru/vi-guide.xml. Даже до сих пор где-то эта шпаргалка в бумажном виде лежит. :slight_smile:

castor sky писал(а):

А я знакомился с Vim по вот этой страничке: http://www.gentoo.org/doc/ru/vi-guide.xml. Даже до сих пор где-то эта шпаргалка в бумажном виде лежит. :slight_smile:

Это про Vi.
Если кому нужно,в man vim, есть линк, Русская локализация Vim выполняется в рамках проекта “РуВим”, см.

http://sourceforge.net/projects/ruvim/.

там много чего переведено,можно скачать архив…
ну и видео в придачу:

http://vimeo.com/user1690209/videos

Вот что я сделал у себя, делюсь конфигом ~/.vimrc

" Значение палитры цветов
set t_Co=256
" Цветовая схема (смотрится красиво в Konsole(KDE) 
"при цветовой схеме Темная постель, глаз не режет)
colorscheme railscasts
" Включаем нумерацию строк
set number
" Игнорируем регистр символов при поиске
set ignorecase
" Размер табуляции
set tabstop=4
" Заменяем табуляции пробелами (use :retab dude)
set expandtab
" Автоматом записывать изменения в файл при переходе к другому файлу
set autowrite
" Постоянно выводим строку с табами
set stal=2
" Отключаем автоотступ
set paste
" Чтобы Vim понимал, какие клавиши нажимаются, если включена русская раскладка
set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz

быстрей чем из командного режима shift*:q! или shift*:wq
ZQ - выйти без сохранения
ZZ - записать файл и выйти(Если файл не изменяли, то записываться он не будет)
цветовая схема,если кому надо для .Xdefaults

! Темная постель - style Konsole
*background: #2C2C2C
*foreground: #DCDCCC
*color0:    #2C2C2C
*color1:    #705050
*color2:    #60B48A
*color3:    #DFAF8F
*color4:    #9AB8D7
*color5:    #DC8CC3
*color6:    #8CD0D3
*color7:    #DCDCCC
*color8:    #709080
*color9:    #DCA3A3
*color10:   #72D5A3
*color11:   #F0DFAF
*color12:   #94BFF3
*color13:   #EC93D3
*color14:   #93E0E3
*color15:   #FFFFFF