OpenSCADAWiki:
Roman Savochenko
/ Vim Short All
...
Home
|
Index
|
Changes
|
Comments
|
Users
|
Registration
|
Login
:
Password:
%%(wacko wrapper=text wrapper_align=center)==VIM -- кратко обо всём.==%% **Автор:** ((/RomanSavochenko RomanSavochenko)) **Примечание:** Документ создаётся автором с 2002г. До настоящего момента документ создавался в среде ~LaTeX. На текущий момент выполняется публикация документа в среде Wiki с последующим оформлением в среде dockbook. ~LaTeX версию документа можно взять ((ftp://ftp.oscada.org.ua/books/VimShortAll.pdf здесь)) и исходник ((ftp://ftp.oscada.org.ua/books/VimShortAll.tex здесь)). Документ оформляется в среде WIKI для привлечения к его развитию общественности. Разрешается вносить изменения в данный документ с целью исправления обнаруженных ошибок или с целью его дополнения. {{TableOfContents page="" title="" numerate=""}} ===1 Опции командной строки=== //-t {tag}// -- Открывает файл с функцией <tag> и позиционирует курсор на неё. Должен присутствовать файл tags сформированный командой ctags (ctags -h ".h.cpp" ./*). //+N// -- При открытии файла позиционирует курсор на строке с номером //N//. ===2 VIM-файлы=== //{home}/.vimrc// -- Локальный файл конфигурации VIM. // /usr/share/vim/ // -- Каталог ресурсных файлов VIM. //vimrc_example.vim// -- Пример конфигурационного файла. ===3 Структура команд=== **[N][команда][объект][N1][команда перемещения]** где: N -- количество повторений команды; N1 -- количество повторений команды перемещения. ===4 Команды=== ====4.1 Перемещение по тексту==== //h, left// -- Влево. //l, right// -- Вправо. //j, down// -- Вниз. //k, up// -- Вверх. //0, home// -- В начало строки. //^// -- Первый непустой символ в строке. //$, end// -- В конец строки. //[N]|// -- На <N> столбец. //[N]_// -- Вниз на <N>-1 строк и на первый не пустой символ. //[N]%// -- На <N> процентов от всего буфера. //[N]G, :[N]// -- Переход на строку <N> (0G - BOF, $G - EOF). //g// -- Перемещение по тексту. Объекты: //0, home// -- на левый край экрана; //^// -- на первый непустой символ; //m// -- на половину ширины экрана; //$, end// -- на правый край экрана; //k, up// -- на одну строку экрана вверх; //j, down// -- на одну строку экрана вниз; //g// -- на первую строку; //o// -- на [N] байт в буфере; //e// -- назад до конца слова; //E// -- назад до конца слова (от пробела до пробела). //f[simb]// -- На первый найденный справа от курсора символ [simb]. //F[simb]// -- На первый найденный слева от курсора символ [simb]. //t[simb]// -- Перед первым найденный справа от курсора символ [simb]. //T[simb]// -- Перед первым найденным слева от курсора символом [simb]. //;// -- Повторить последнюю команду F,f,T,t в том же направлении. //,// -- Повторить последнюю команду F,f,T,t в противоположном направлении. //-// -- На строку вверх и на первый не пустой символ. //+, Enter// -- На строку вниз и на первый не пустой символ. //G, ^+End// -- На последнюю строку. //H// -- На первую строку экрана. //M// -- На среднюю строку экрана. //L// -- На последнюю строку экрана. //w, Sh+Right// -- На слово вперед. //W, ^+Right// -- На слово вперед (от пробела до пробела). //e// -- Вперед до конца слова. //E// -- Вперед до конца слова (от пробела до пробела). //b, Sh+Left// -- На слово назад. //B, ^+Left// -- На слово назад (от пробела до пробела). //(// -- На предложение назад (до точки). //)// -- На предложение вперед (до точки). //{// -- На абзац назад (до пустой строки). //}// -- На абзац вперед (до пустой строки). //[[// -- Вперед на одну секцию или до { в начале строки. //][// -- Вперед на одну секцию или до } в начале строки. //]]// -- Назад на одну секцию или до { в начале строки. //[]// -- Назад на одну секцию или до } в начале строки. //^G, :file// -- Информация о текущем положении курсора в тексте. //^]// -- Переход по ссылке или на определение функции. //^T// -- Возврат после перехода по ссылке. //^O// -- Назад по списку переходов. //^I, Tab// -- Вперёд по списку переходов. //:ju// -- Список переходов. ====4.2 Прокрутка экрана==== //^+E// -- Вниз на одну строку. //^+D// -- Вниз на scroll строк. если использовать цифру то далее она будет по умолчанию. //^+F, ~PgDwn// -- Вниз на одну страницу. //^+Y// -- Вверх на одну строку. //^+U// -- Вверх на scroll строк. если использовать цифру то далее она будет по умолчанию. //^+B, ~PgUp// -- Вверх на одну страницу. //zEnter// -- Прокрутка вверх, пока курсор не окажется на первой строке. //zt// -- Тоже, но курсор остаётся в той-же строке. //ZZ// -- Сохранить и выйти. //z[N]Enter// -- Изменить размер окна до <N> строк. //z.// -- Прокрутка помещающая строку с курсором в центре экрана. //zz// -- Тоже, но курсор остается в том же столбце. //z-// -- Прокрутка вниз, пока курсор не окажется в на последней строке. //zb// -- Тоже, но курсор остаётся в том же столбце. //zl// -- На один символ влево. //zh// -- На один символ вправо. //zL// -- На полуширину экрана влево. //zH// -- На полуширину экрана вправо. //zs// -- Помещает курсор на левый край. //ze// -- Помещает курсор на правый край. ====4.3 Смена режимов==== //Ins, i, a// -- Переход в режим вставки. //v// -- Визуальный строчный режим (с точностью до символа). //V// -- Визуальный строчный режим (с точностью до строки). //^V// -- Визуальный блочный режим. //gv// -- Возврат к области, выделенной в прошлый раз. //:// -- Командный режим. //r// -- Переход в режим замены. //gR// -- Переход в виртуальный режим замены. //ESC// -- Возврат в нормальный режим. ====4.4 Работа с файлами==== //:q// -- Выход (если не требует сохранения). //:q!// -- Закрыть окно без сохранения. //:qa!// -- Выход из всех открытых файлов без сохранения. //:x// -- Выход из всех открытых файлов без сохранения. //:wqa// -- Выход из всех файлов с сохранением. //:w// -- Запись в файл. //:w!// -- Запись в файл даже если он только для чтения. //:wq[!]// -- Сохранить и выйти. //:r// -- Загрузить файл в позицию курсора. //:e [++opt] [+cmd] [<file>]// -- Открыть новый файл заместив старый (без имени файла - перечитывает текущий). Доступные опции [++opt]: //enc// -- перекодировка (++enc=cp866); //ff// -- формат файла (++ff=unix). Доступные команды [+cmd]: //+// -- начать с конца файла; //+<num>// -- начать с указанной строки; //+/<pat>// -- начать с первой строки в которой встречается шаблон <pat>. //:e! [++opt] [+cmd] [<file>]// -- Открыть новый файл заместив старый и игнорируя все изменения (без имени файла - перечитывает текущий). //:e #[count]// -- Открыть файл под номером <count> из :files. //:sp// -- Открыть в новом окне. //gf, [f// -- Редактировать файл под курсором. ====4.5 Редактирование==== //x, del// -- Удаление символа под курсором. //X// -- Удаление символа перед курсором. //u, :u// -- Откат. //U// -- Отменить все изменения, повлиявшие на текущую строку. //[reg]^R, :red// -- Накат, вставка из регистра. //С// -- Удалить от курсора и до конца строки с переходом в режим ввода. //c// -- Изменение, удаление и ввод нового. //l// -- символ, аналог s; //c// -- строку, аналог S; //[N]o// -- удаление по команде перемещения "o" [N] раз. //D// -- Удалить от текущего символа до конца строки. //[reg]d// -- Вырезать часть строки в регистр [reg]. Объекты: //l// -- аналог x; //h// -- аналог X; //d// -- текущей строки; //w// -- до конца слова; //$// -- до конца строки; //[N]o// -- удаление по команде перемещения "o" [N] раз. //o, O// -- Вставка новой строки до и после текущей, с переходом в режим вставки. //J// -- Объединить строку с последующей. //r[симв]// -- Заменить символ под курсором на [симв]. //gr[симв]// -- Заменить виртуальный символ под курсором на [симв]. //gJ// -- Тоже, но не вставляя новых пробелов. //[reg]y[com]// -- Копирование в регистр [reg("a)] строк через которые перенесет команда [com]. //[reg]yy, Y// -- Копирование в регистр [reg("a)] текущую строку. //[reg]p// -- Вставка текста из регистра [reg("a)] после курсора. //P, ~MidMouse// -- Вставка текста из регистра перед курсором. //gp// -- Тоже что и p, но курсор помещается в конец вставленного текста. //gP// -- Тоже что и P, но курсор в конец вставленного текста. //]p// -- Тоже что и p, но дополнительно изменяется отступ вставляемого текста, аналогично отступу текущей строки. //]P// -- Тоже что и P, но дополнительно изменяется отступ вставляемого текста, аналогично отступу текущей строки. //.// -- Повторение предыдущей команды изменившей буфер. //g~ , ~ [com]// -- Изменение регистра букв на участке текста, через который перенесёт команда [com]. //g~ ~// -- Изменение регистра букв в текущей строке. //gu[com]// -- Превращение букв в строчные на участке текста переноса команды [com]. //guu// -- Превращение в строчные буквы в текущей строке. //gU// -- Превращение букв в прописные. //gUU// -- Превращение в прописные буквы в текущей строке. //g?[com] -- Перекодировка по алгоритму rot13 на участке текста переноса команды [com]. //g??// -- Перекодировка по алгоритму rot13 в текущей строке. //[N]^A// -- Добавить число <N> к числу в позиции курсора. //[N]^X// -- Вычесть число <N> от числа в позиции курсора. //!// -- Обработка внешней программой. //=// -- Расстановка отступов для языка программирования С. //<[com]// -- Сдвиг влево на значение (shiftwidth) строк, через которые перенесла бы команда[com]. //<<// -- Сдвиг влево текущей строки. //>[com]// -- Сдвиг вправо на значение (shiftwidth) строк, через которые перенесла бы команда[com]. //>>// -- Сдвиг вправо текущей строки. ====4.6 Поиск==== // /{str}[/[off]]// -- Переход вперёд на смещение <off> искомой строки <str>. //?{str}[?[off]]// -- Переход назад на смещение <off> искомой строки <str>. // / // -- Повторить последний поиск в прямом направлении. //?// -- Повторить последний поиск в обратном направлении. //n// -- Повторить последний поиск. //N// -- Повторить последний поиск в обратном направлении. //*// -- Поиск в прямом направлении идентификатора под курсором. //#// -- Поиск в обратном направлении идентификатора под курсором. //gd// -- Перейти к локальному определению переменной под курсором. //gD// -- Перейти к глобальному определению переменной под курсором. //:/[search]// -- Поиск <search> в прямом порядке. //:?[search]// -- Поиск <search> в обратном порядке. //:[address]s/[search]/[repl]/[gci]// -- Поиск [search] и замена на [repl] (в режиме VISUAL - без адреса и в выделенной области) [gci]: //< >// -- первого вхождения; //<g>// -- всё; //<c>// -- с запросом подтверждения; //<i>// -- игнорируя регистр. [address]: //<%>// -- весь текст; //<1>// -- первая строка; //<.>// -- текущая строка; //<$>// -- последняя строка; //<1,3>// -- между строками 1-3; //<.,$>// -- от текущей до последней. ====4.7 Манипуляции с окнами==== //^W// -- Операции с окнами: //i, d, f// -- новое окно с i-переменой, d-определением, f-файлом под курсором; //n// -- открыть новое окно; //s// -- сдублировать еще одно окно от текущего (горизонтально); //v// -- сдублировать еще одно окно от текущего (вертикально); //с, q// -- закрыть текущее окно; //o// -- закрыть все остальные окна; //r// -- сдвиг вверх; //R// -- сдвиг вниз; //x// -- сдвиг на другое окно с активизацией другого окна; //K// -- переместить текущее окно вверх; //J// -- переместить текущее окно вниз; //H// -- переместить текущее окно влево; //L// -- переместить текущее окно вправо; //k, Up// -- активизировать окно сверху; //j, Down// -- активизировать окно снизу; //h, Left// -- активизировать окно слева; //l, Right// -- активизировать окно справа; //w// -- активизировать следующее окно; //p// -- активизировать предыдущее окно; //+// -- увеличить высоту окна на одну строку; //-// -- уменьшить высоту окна на одну строку; //>// -- увеличить ширину окна на один символ; //<// -- уменьшить ширину окна на один символ; //=// -- сравнять размеры окон; //_// -- установить максимальную высоту окна; //1_// -- установить минимальную высоту окна; //|// -- установить максимальную ширину окна; //1|// -- установить минимальную ширину окна. //:sp// -- Разделить окно по горизонтали. //:vs// -- Разделить окно по вертикали. //:new// -- Создать новое окно (горизонтальное разделение). //:vne// -- Создать новое окно (вертикальное разделение). ====4.8 Метки==== //m[M]// -- Установить метку <M> в позицию курсора. //m", m'// -- Установить метку предыдущего контекста. //:[N]ma, [N]k M// -- Установить метку <M> на строке <N>. //'M// -- Перемещение в начало строки с меткой <M>. //`M// -- Перемещение на метку <M>. //'[// -- Первый непустой символ в первой строке части текста, над которой производилась последняя операция. //"[// -- Первый символ части текста, над которой производилась последняя операция. //']// -- Первый непустой символ в последней строке части текста, над которой производилась последняя операция. //"]// -- Последний символ части текста, над которой производилась последняя операция. //:marks// -- Показать список меток. //:marks ABC..// -- Показать метки ABC.. . //%// -- Переход на противоположную скобку: ()[].... . //[(// -- Переход к предыдущей незакрытой ( . //[{// -- Переход к предыдущей незакрытой { . //[)// -- Переход к следующей не открытой ( . //[}// -- Переход к следующей не открытой } . //]m// -- Переход к следующему началу метода (Java). //]M// -- Переход к следующему концу метода (Java). //[m// -- Переход к предыдущему началу метода (Java). //[M// -- Переход к предыдущему концу метода (Java). //[#// -- Переход на предыдущий незакрытый #if или #else. //]#// -- Переход на следующий неоткрытый #else или #endif. //[*, [/ // -- Переход на предыдущее начало С-комментария /*. //]*, ] / // -- Переход на следующий конец С-комментария */. ====4.9 Регистры==== //""// -- Безымянный регистр (используется по умолчанию). //"0// -- Содержит текст прочитанный последней командой 'y'. //"1-"9// -- Сдвиговые регистры удалённого и изменённого текста. //"-// -- Заполняется при удаление текста, занимающего менее одной строки. //"a-"z// -- Именованные регистры, заполняются только при указании их специально. //".// -- Последний вставленный текст. //"%// -- Содержит имя редактируемого файла. //"#// -- Содержит имя альтернативного файла. //":// -- Последняя команда в режиме ':'. //"=// -- Ввод выражений. //"*// -- Хранит в себе выбранный мышью текст (X-Window). //"/ // -- Регистр последнего поиска. //:reg [reg]// -- Печать содержимого регистров. //q[reg]// -- Ввод регистра [reg] до нажатия q. //@[reg]// -- Выполнения команд в регистре [reg]. ====4.10 Настройки==== //:set// -- Работа с опциями (без имени опции показывает установленные опции). //all// -- показать все опции; //termcap// -- показать только терминальные опции; //<opt>// -- активирует опцию если она логическая; //<opt>!// -- инвертирует опцию; //<opt>&// -- устанавливает стандартное значение опции; //no<opt>// -- деактивирует опцию; //<opt>=<value>// -- установка значения опции в <value>; //<opt>?// -- показать значение опции. //:options// -- Установка различных опций. ====4.11 Опции==== //ai// -- При начале новой строки отступ копируется из предыдущей. //aw// -- Сохраняет содержимое файла, если он был изменен перед выполнением некоторых команд. //bk// -- Создаёт резервную копию файла при перезаписи. //bkc// -- Определяет метод создание резервной копии: <yes> -- Копирует существующий файл и перезаписывает старый; <no> -- Переименовывает существующий файл и создает новый; <auto> -- Выбирает наиболее оптимальный вариант. //bin// -- Редактирование файла в бинарном режиме. //dict// -- Список файлов с словарями автозавершения ключевых слов (разделяются запятыми, переключение Ctrl-X + Ctrl-K). //dy// -- Изменяет способ отображение текста. //ef// -- Имя файла с ошибками в режиме быстрой отладки. //efm// -- Описание формата строки файла с ошибками, записанное в стиле scanf. //fenc=<code>// -- Перекодировать файл в кодировку <code> (set fenc=koi8-r). //ff=<format>// -- Изменить формат файла на <format> (dos,unix,mac). //fcl// -- Если равно "all", то группировка автоматически закрываются, при выходе курсора за её пределы. //fdm// -- Определяет метод группировки для текущего окна. //ic// -- Игнорировать регистр при поиске. //mef// -- Имя файла ошибок, возникших при выполнении команды :make . //mouse=a// -- Включить мышь в X или GUI. //mp// -- Программа, используемая при выполнении команды :make . //ml// -- Включает непосредственное включение строки конфигурации в редактируемый файл. //number// -- Показывать номера строк. //scrollbind// -- Установить совместную прокрутку содержимого окон. //sbr// -- Символы, которыми обозначаются автоматически перенесённые строки. //sm// -- Если установлено, то при вводе закрывающей скобки происходит быстрая подсветка соответствующей ей открывающей скобки. //sw// -- Число пробелов используемых при автоотступе. //ts// -- Размер табуляции. //tw// -- Максимальное число символов, которые могут быть введены в одну строку. //tsr// -- Список файлов, по которым осуществляется поиск словарных статей (<CTRL>+X + <CTRL>+T). //ul// -- Максимальное число изменений, которые могут быть отменены. //ve// -- Включает автоматическое заполнение пробелами/табуляторами при навигации по тексту. //vb// -- Заменить звуковой сигнал визуальным. //wrap// -- Заворачивание строк длиннее ширины экрана. //wb// -- При перезаписи файла, создается его временная копия. ====4.12 Команды интеграции==== //:help com// -- Получение помощи по команде <com>. Префиксы команд: //<ничего>// -- нормальная команда; //v_// -- визуальная команда; //i_// -- вставочная команда; //:// -- команда командной строки; //с_// -- редактирование командной строки; //-// -- командные аргументы. //:! com// -- Запускает в оболочке команду <com>. //:!!// -- Повторяет предыдущую команду :! . //:r! com// -- Вставить в позицию курсора "выхлоп" команды <com>. //:r file// -- Вставляет в текст содержимое файла <file>. ====4.13 Группировка текста==== //:mkview// -- Создание/сохранение группировок файла. //:loadview// -- Загрузка группировок файла. //zf// -- Создать группировку выделенного участка (маркер группировки). //zfap// -- Создать группировку параграфа (маркер группировки). //zd// -- Удалить группировку. //zE// -- Удалить все группировки. //zo// -- Открыть текущую группировку. //zO// -- Открыть текущую группировку рекурсивно. //zr// -- Открыть все группировки. //zc// -- Скрыть/закрыть текущую группировку. //zС// -- Скрыть/закрыть текущую группировку рекурсивно. //zM// -- Скрыть/закрыть все группировки. ====4.14 Компиляция/отладка программ==== //:make// -- Вызов команды make (сборка проекта). //:cc[numb]// -- Отображение ошибки с указанным номером. //:cn// -- Перейти к следующей ошибке. //:cp// -- Перейти к предыдущей ошибке. //:cr// -- Перейти к первой ошибке. //:cla// -- Перейти к последней ошибке. //:cq// -- Выйти из программы с возвратом кода ошибки. //:cf [file]// -- Загрузить указанный файл в качестве файла ошибок. //:cl// -- Отобразить все ошибки. //:copen// -- Открыть окно со списком ошибок. //:cclose// -- Закрыть окно со списком ошибок. //:cscope// -- ????? ====4.15 Другое==== //^p, ^n// -- Дополнение слова используя в качестве словаря весь текст или дополнительные источники (include файлы). //Sh+K// -- Вызов man по команде под курсором. //[i// -- Показать определение (included) переменной, функций ... . //[d// -- Показать определение (defined) МАКРО. //ga// -- Информация о символе под курсором. //g ~ [com]// -- Изменение регистра букв на участке текста, через который перенесет команда [com]. //:ls// -- Список буферов. //:badd [file]// -- Добавить файл в буфер. //:bdelete [N]// -- Выгрузить буфер. //:buffer [N]// -- Перейти к буферу [N]. //:hardcopy// -- Распечатать. //:iabbrev// -- Описание аббревиатур (:iabbrev L$ Linux). ====4.16 Часто используемые команды (желательно запомнить)==== //[N]G// -- Переход на строку <N>, 0G - BOF, $G - EOF. //%// -- Переходит на противоположную скобку: ()[].... . //^]// -- Переход по ссылке или на определение функции. //^T// -- Возврат после перехода по ссылке. //^O// -- Назад по списку переходов. //^I// -- Вперёд по списку переходов. //u, :u// -- Откат. //U// -- Отменить все изменения, повлиявшие на текущую строку. //^R,:red// -- Накат. //.// -- Повторение предыдущей команды изменившей буфер. //m[M]// -- Установить метку <M> в текущую позицию. //'M// -- Перемещение в начало строки с меткой <M>. //`M// -- Перемещение на метку <M>. //:copen// -- Показать окно ошибок (после вызова команды типа make). //^p, ^n// -- Дополнение слова используя в качестве словаря весь текст или дополнительные источники (include файлы). //[i// -- Показать определение переменной, функций ... . === Ссылки === * ((http://www.vim.org/ vim.org)) * ((http://www.linux.com/print.pl?sid=07/01/11/2141259 Vim tips: using tabs)) //(vim7)// * ((http://www.linux.com/print.pl?sid=07/03/22/1236235 Vim tips: making Vim easy)) {{backlinks}}
Please type the word you read in the image: