Любой текстовый редактор можно освоить «методом тыка». Но только не vim.
Чем nano лучше vim? Из nano можно выйти без reset'а!
(с) Интернет
Для быстрого перехода к списку команд nano или vim нажмите на картинку.
Изначально я не планировал писать об обоих редакторах, а хотел сделать
краткую справку только по nano, но в процессе сбора информации накопились данные и по vim тоже. Тут я обнаружил, что
Vim не так уж и страшен, если знать команды и концепцию его использования.
Что это и зачем нужно?
Когда недоступна графическая среда, например при работе по ssh, настройке системы до загрузки xserver, либо просто из любви к извращениям
красноголазию начинаешь чувствовать себя ущербным инвалидом в
консольном текстовом редакторе, клавиш управления которым не знаешь от слова совсем.
Даже навигация по файлу и копипаста начинают представлять собой почти
непреодолимую преграду. Просто потому, что в консоли не работают многие
привычные комбинации клавиш, будучи задействованными под другие нужды ещё
во время дискет 5.25" на 320Кб.
Я долгое время использовал редактор от Midnight
Commander mcedit, немного пользовался nano, и совсем не
пользовался vim. Вызубрить все эти
комбинации за гранью возможного - даже потратив на это время, через
какой-то период простоя они успешно забываются. До того, как я взялся за
написание этой статьи, я не мог заставить себя осилить даже азы vim, он пугает уже на стадии
запуска, "пытаешься из него сразу же выйти, и не можешь!" Это как вы сейчас зайдёте в интерпретатор ZX Spectrum
BASIC48, то не зная азов даже простейшей программы PRINT "Hello World!"
не напишите. Я не переставал задавать себе вопрос: "Интересно, и за что гуру vim так любят? Зачем тратить
кучу
времени на переобучение, и главное как не растерять навыки, для каких
целей его постоянно использовать, этот vim?"
Ниже я опишу самые необходимые комбинации клавиш и приёмы работы в обоих редакторах.
Nano
После комбинации Alt-6, как команды «скопировать» я даже и не знаю что сказать Наверное автор Nano был пианистом (c) из хабра-комментариев
Основой мне послужила статья на хабре: "Nano: И всё-таки его придётся выучить", а также все комментарии к ней. Они не просто её дополнили, но и заставили посмотреть в сторону vim.
РосNano-концепция:
В
терминах nano текст, отделённый пустыми строками называется
«параграф». Все команды отдаются нажатием комбинаций клавиш —
функциональными кнопками или комбинацией Ctrl+буква или Alt+буква. Если в
каком-либо случае комбинация с Ctrl или Alt забронирована системой,
следует использовать дублирующие комбинации с Esc.
Одинарное нажатие на Esc эмулирует клавишу Alt. Двойное Esc Esc эмулирует клавишу Ctrl. То есть вместо Alt+X можно набрать Esc X, вместо Ctrl+K можно набрать поочерёдно Esc Esc K.
Самое важное:
Alt+U (Esc U) — Undo, отмена последнего действия. Alt+E (Esc E) — Redo, повтор отменённого действия.
F1 (Ctlr+G) — Показать справку F2 — Выход с сохранением файла Ctrl+X — Вернуться к редактированию из справки, и прочих диалоговых окон, выход из программы.
Копирование и вставка текста: Alt-A (Ctrl-6) — установить\снять маркер начала выделения текста (либо просто стрелки с shift) Alt+6 (Esc 6) — копировать выделение текст в буфер обмена. Комбинация alt+6 у меня занята и не заработала. Ctrl+K (или F9) — вырезать выделенный фрагмент в буфер обмена, при отсутствии выделения удалить строку. Ctrl+U (или F10) — вставить фрагмент из буфера обмена Ctrl+Shift+V — вставить из GUI буфера обмена Ins — Вставка текста из другого файла, либо вывода команды.
Поиск и замена:
Ctrl+W — Поиск Alt+W — Повторный поиск Ctrl+\ — Замена. Помнит последний поиск как изменяемое по умолчанию.
Навигация:
Alt+\ (Ctrl+Home) — В начало файла Alt+/ (Ctrl+End) — В конец файла Ctrl+Y (PgUp)— На страницу вверх Ctrl+V (PgDn) — На страницу вниз Alt+S — Переключение между плавной прокруткой страниц и фиксированной
Дублирование курсорных клавиш, то чем так гордится vim, только врастапырку: Ctrl+B — Влево на символ Ctrl+F — Вправо на символ Ctrl+N — Вниз на символ Ctrl+P — Вверх на символ
Ctrl+Space — На слово вперёд, можно просто Ctrl+курсор. (курсор встаёт в начале слова) Alt+Space (ESC Space) — На слово назад. (у меня эта комбинация вызывает строку быстрого запуска KRunner в KDE, поэтому использую ESC Space)
Alt+- — Прокрутка вверх не меняя позиции курсора Alt+= — Прокрутка вниз не меняя позиции курсора Alt+7 (Esc 7) — К предыдущему блоку текста, либо просто Ctrl+курсор Alt+8 (Esc 8) — К следующему блоку текста. Alt+0 (Esc 0) — К следующему параграфу (до первой пустой строки вниз). Alt+9 (Esc 9) — К предыдущему параграфу (до первой пустой строки вверх).
Alt+G — Переход на строку с указанным номером.
Alt+< — Переход к предыдущему открытому файлу (Если nano запущен с несколькими файлами)
Alt+> — Переход к следующему открытому файлу.
Ещё пишут про команду Alt+F,
которая не то включает такую возможность, не то позволяет зачем-то
иметь отдельные буфера обмена на каждый файл, но как она работает я не
понял.
Редактирование текста:
Ctrl+D (Del) — стереть символ под курсором Ctrl+H (BSp) — Стереть символ слева от курсора Ctrl+M (Enter) — Вставка пустой строки. Ctrl+I (Tab) — Вставка табуляции. Alt+Shift+{ — Уменьшить отступ параграфа удалением табуляции или пробелов Alt+Shift+} — Увеличить отступ параграфа, вставкой табуляции. Если уже был отступ пробелами, добавит к нему табуляцию и подсветит красным. Ctrl+] — Автодополнение слов, например команд в программе. Программисты оценят! Alt+3 (Esc 3) — За(рас)комментировать символом # текущую строку, выделенный параграф. Alt+J (F4) — Justify, выровнять текущий абзац
Разное:
Esc Esc 220 — Ввод символов по десятичному коду. Например 220 - ввод Ü с умляутом. Alt+V — Ввод ASCII последовательности комбинации или клавиши. Alt+T — Trunkate. Стирает всё от курсора и до конца файла. Ctrl+C (F11) — Разово выводит информацию по текущей строке, колонке, номеру символа. Alt+D — Подсчитать количество слов, строк, символов в файле Ctrl+L — Обновить экран
Настройки nano:
Alt+Shift+4 — Мягкий перенос длинных строк разрешить/запретить Alt+K — переключает действие по Ctrl+K между удалением по умолчанию всей строки и удалением от курсора до конца строки. Alt+Q — Переключиться с табуляций на ввод пробелов. Alt+L — Включить и выключить жёсткий перенос строк. Alt+C — Переключает постоянный вывод инфо по строке по Ctrl+C Alt+X — Показать\скрыть строку подсказки внизу экрана. Alt+Shift+3 — Показывать номера строк. Alt+P — Показывать пробелы символом "·" Alt+Y — Показывать подсветку синтаксиса. Alt+H (Esc H) — Включить умную клавишу Home (переводит курсор не в 1ю колонку, а на 1й символ строки) Alt+I (Esc I) — Включить автоотступы (перевод строки на новую с таким же отступом, как у предыдущей) Alt+B — Переключиться на создание резервных копий и обратно Alt+M — Включить "поддержку мыши". лучше не использовать, ерунда!
Говорят,
что nano по умолчанию не поддерживал отмену действий (undo). У меня в
Manjaro всё поддерживает, но на всякий случай решение - запускать nano с
ключом -u: nano -u filename. Для включение подсветки синтаксиса в nano следует раскомментировать директивы include в файле /etc/nanorc.
«у vi есть два режима: бибикать и всё портить» (c) Холиварненько
Изначально Vim разрабатывался для аппаратного терминала ADM-3A, он слева на фото.
Приведу несколько цитат перед статьёй, которые как бы намекают читателю:
"— Ужаснись и беги. Слышишь смертный? Беги! И не говори потом, что тебя
не предупреждали..."
Продвинутый
текстовый редактор — кошмар для случайного пользователя. Если его
удается в конце концов закрыть, то вздыхаешь с облегчением и твердой
уверенностью, что больше не будешь запускать эту программу ниразу в
жизни. Пожалуй, Vim нельзя просто запустить и начать работать —
требуется определенная подготовка. Зато стоит раз испытать его в деле и
поражаешься тому, как можно было без него обходиться. (c) https://ru.wikibooks.org/wiki/Vim
* * *
Ну, смотрите, человек запускает vim, курсором доползает до нужного
места, стирает лишнее, начинает печатать, в какой-то момент доходит до
буквы 'i'/'c' и т.д., после чего остаток введённого появляется на экране
не там, где человек хотел. Он нажимает esc, q, у него начинается
какая-то фигня, он нажимает несколько раз esc, esc, потом пишет :q,
потом нажимает три раза Esc пишет :Q!, потом нажимает ещё пару раз Esc,
пишет :q!, потом снова vim и уже редактировать. (q) Пример ада с vim
* * *
У меня кстати была обратная ситуация, когда я подошел к сотруднику
подсказать что подправить в конфиге и в фаровском редакторе напечатал
ему полстрочки букв j, прежде чем понял, что что-то не так, курсор
двигается вправо, а не вниз и ещё и мусор какой-то появляется.
(q) Байка о силе привычки
* * *
Судя по тому, что я сейчас прочел, пользователи… нет, скорее «активисты»
vi — не просто придурки, а отборные мазохисты. Не знаю, может кто-то в
этой статье видит преимущества vi, я же вижу убийственный гемморой,
переусложняющий простой ввод кода до уровня секвенирования ДНК. (й) +15 голосов в хаброкомментах
* * *
Cейчас средства разделились на редакторы (набрать текст) и IDE (работать
с проектом). Вим получается посередине, как утка. Но это уже не нужно.
Если я хочу набрать текст — мне не нужен редактор который осваивать
дольше чем IDE, мне нужен ee/nano. А если мне нужна работа с проектом —
мне нужна нормальная IDE с большими возможностями и низким порогом
вхождения, а не школа белого нидзя по освоению навороченного текстового
редактора.
(q) убийственный хаброкоммент
Выше показана старая клавиатура IBM PC AT original keyboard. Приглядитесь повнимательнее. Vim разрабатывался ещё в те времена, когда клавиша Ctrl находилась на месте CapsLock, где удобнее нажимать мизинцем. Как часто вы пользуетесь этой клавишей? А клавишей Ctrl? Но фирма IBM решила иначе, и всё сложилось как сложилось.
Тем не менее, мы попытаемся!
VIM — это слепой десятипальцевый метод редактирования текста. (й) youtube
Следует запомнить, что Vim имеет два режима: командный и модальный. В первом вводятся команды, например просто введя двоеточие : можно стрелками вверх-вниз перебирать историю ранее введённых команд. Введя начало команды, по Ctrl+d можно увидеть список похожих команд, а по Tab дополнить сокращение до полного названия команды. Все команды, начинающиеся с : должны завершаться нажатием ENTER, остальные исполняются моментально. Во втором режиме правится текст. Вход в модальный режим по a, i. После правки фрагмента текста, всегда нажимайте Esc, чтобы вернуться в командный режим, и у вас никогда не возникнет вопроса, в каком режиме сейчас редактор.
Поясняющая цитата о вводе команд: Команды в vim задуманы комбинируемыми: 'd' значит "удалить", 'e' значит
"переместить курсор в конец слова", поэтому 'de' завершенная команда,
означающая "удалить все от текущего положения курсора до следующего
конца слова" Команды регистрозависимы!
Например войдя в модальный режим (редактирование текста) по i, введя "True", и выйдя в командный по Esc, вы можете перемещаться по файлу со всей мощью команд навигации и нажимать '.'
везде, где нужно повторить команду, то есть вставить слово "True" в
текущую позицию курсора в данном случае. Учитывается весь введённый
фрагмент с перемещениями курсора и стиранием символов. Так можно по
точке автоматизировать ввод форм в одинаковые блоки.
Команды Vim:
Возможно, это только для меня стало внезапным открытием,
но вся справка на русском языке по клавишам vim доступна внутри
терминала в виде уроков по команде (в том числе по ней я делал этот
конспект):
vimtutor ru
Перемещение:
hjkl — дублирование курсорных клавиш влево,вниз,вверх, вправо. ^ или 0 (нуль) — В начало строки $ — В конец строки w — Переход к началу следующего слова. e — Переход в конец текущего, затем следующего, слова. E (Shift+e) —Как e только без учета символов препинания. % — Перемещение в строке между скобками: (){}[] Ввод числа перед оператором перемещения приведёт к его повторению заданное количество раз. 2w — Перемещение курсора вперёд к началу второго слова. 3e — Перемещение курсора вперёд к концу третьего слова.
Комбинирование команд упрощает навигацию: j$ —Вниз, в конец следующей строки.
Alt+{ (Alt+Shift+[) — Переместиться на пустую строку перед текущим параграфом Alt+} (Altl+Shift+]) — Переместиться на пустую строку после текущего параграфа
Shift+g — Перейти в конец файла. Если перед этим ввести номер строки, то переход к ней. 507 Shift+g — Например вот так будет переход не в конец, а к строке номер 507 :45 Enter или 45gg — Переход к строке номер 45 Вместо k может быть любая маленькая буква для локальных меток, и большая для глобальных, к которым можно обращаться из другого файла. mk — Пометить текущую позицию как k ‘k — Перейти к раннее созданной метке k '. — (backquote, dot) перейти по автоматической метке в начало последней отредактированной строки.
H, M, L — перемещение курсора на верхнюю, среднюю и нижнюю линию экрана. zt, zz, zb — перемещение курсора вместе с текстом на верхнюю, среднюю и нижнюю линию экрана. * — Переместить курсор на следующее слово, такое же, как под курсором # — Переместить курсор на ПРЕДЫДУЩЕЕ слово, такое же, как под курсором
Оконная навигация — окна и вкладки:
На каждый открытый файл выделяется свой буфер редактирования, которым оперирует пользователь. При нескольких открытых файлах можно переключаться между ними, то есть между их буферами:
:bn — открыть в текущем окне следующий буфер :bp — предыдущий :ls — просмотреть список открытых буферов :b имя_буфера — переключиться на буфер открытого файла, работает автодополнение по Tab. :bd имя_буфера — удалить буфер по имени :bd — удалить текущий буфер, либо выйти из vim, если этот буфер единственное окно.
Разбивка окна на несколько подокон и навигация между ними: Ctrl+w v — ( :vsplit ) разделить окно по вертикали Ctrl+w s — ( :split ) разделить окно по горизонтали
Ctrl+w f — разделить окно и в новом открыть файл, имя и путь к которому находится под курсором
Ctrl+w q или c — закрыть текущее окно Ctrl+w n — создать новое окно ( :new filename )
Сtrl+w o — развернуть текущее окно на весь экран, закрыв прочие подокна. Сtrl+w _ — (нижнее подчеркивание) развернуть окно до максимального размера Сtrl+w = — Сделать все окна текущего таба одинакового размера Ctrl+w+ или Ctrl+w- — увеличение или уменьшение размера текущего окна Esc 5 Ctrl+w+ или Сtrl+w 5+ — Увеличить размер текущего окна сразу на 5 строк/столбцов. Esc 5 Ctrl+w - или Сtrl+w 5- — Уменьшить размер текущего окна сразу на 5 строк/столбцов.
Ctrl+wCtrl+w — переход к следующему подокну Ctrl+w HJKL — переместить окно влево/вправо/вверх/вниз, плюс перегруппировка компановки окон Ctrl+w hjkl либо курсор — переместить курсор на окно влево/вправо/вверх/вниз
Параметры запуска vim: vim -o filename1 filename2 — запустить vim с двумя файлами, открытыми в горизонтальных окнах vim -O filename1 filename2 — запустить vim с двумя файлами, открытыми в вертикальных окнах vim -d filename1 filename2 — запустить vim с двумя файлами и сравнить их, подсветив отличия.
Помимо окон есть ещё вариант разложить открытые файлы по отдельным вкладкам (Tabs) :tab ball — Поместить все открытые файлы во вкладки :tabnew — Создать новую вкладку, чтобы не бить текущее окно на большое количество маленьких подокон gt — (go to tab) Перейти на следующую вкладку gT — (go to tab) Перейти на предыдущую вкладку :tabn — Следующая вкладка :tabp — Предыдущая вкладка Ctrl+PageUp и Ctrl+PageDown — стандартные горячие клавиши для перемещения между табами, но они могут быть заняты эмулятором терминала.
:set mouse=a — Если включить, то будет можно мышью выбирать вкладки, окна, и изменять их размер
Вход в модальный режим редактирования текста:
i — Insert, переход в режим вставки текста левее курсора a — Append, переход в режим вставки текста правее курсора A — App_end, переход в режим вставки текста в конец строки R — Replace, переход в режим замены текста. o — создать пустую строку под текущей и перейти к её редактированию. O — создать пустую строку НАД текущей и перейти к её редактированию.
Редактирование:
u — UNDO, отмена последнего действия U — UNDO, отмена изменений только в последней строке Ctrl+r — Redo, повторить отменённое действие текущего модального сеанса редактирования.
Многие команды, изменяющие текст, состоят из оператора и объекта. Например ниже оператор удаления d комбинируется с объектом направления удаления: dw — (delete word) удалить от курсора до конца слова, включая последующий пробел. de — удалить от курсора до конца слова, НЕ включая последующий пробел. d$ — удалить от курсора до конца строки. d^ — удалить от курсора до начала строки. ce — удаляет слово и переводит в режим вставки. c$ — удалить от курсора до конца строки и перейти в режим вставки (редактирования текста).
Ввод числа перед оператором приведёт к его повторению заданное количество раз. d2w — Удаление двух слов подряд x — Del, стереть символ под курсором. dd — Удаление строки D (Shift+d)— Вырезать в буфер содержимое от курсора до конца строки. C (Shift+c)— Вырезать в буфер содержимое от курсора до конца строки и перейти в режим правки.
r — замена символа под курсором следующим за r После
нажатия r+символ возвращается в командный режим, что делает неудобным
использование для правки русского текста без адаптации командного режима
vim к русской раскладке клавиатуры.
diw — (delete inner word) удалить слово под курсором ciw — (change inner word) заменить слово под курсором (удалить и перейти в режим редактирования) cib — (change in brackets) Удалить выражение внутри скобок () и перейти к редактированию c% — Вырезание выражения в парных скобках от курсора до следующих скобок. (% этоShift+5) dit — (delete in tag) Удалить текст внутри html или xml тэга под курсором cit — (change in tag) Заменить текст внутри html или xml тэга под курсором, (удал. и пер. в реж. ред.) ce WORD Esc — вводить на первом символе какого-либо слова, чтобы заменить его на WORD. После по точке так можно будет сделать с любым.
d$ или D (Shift+d) — удаляет строку после курсора
db — удалить слово ДО курсора di( — удаляет то что в скобочках. di" — то, что в кавычках ya( — копировать содержимое внутри скобок () вместе с самими скобками
s — Удалить символ под курсором и перейти в режим редактирования S — Удалить все до конца строки и перейти в режим редактирования d5d — удалить 5 строк от курсора вниз
Ctrl+a — Увеличить на единицу ближайшее справа число. Ctrl+x — Уменьшить на единицу ближайшее справа число.
Vu — Перевести строку в нижний регистр VU — Перевести строку в верхний регистр g~~ — Инвертировать регистр Автодополнения: Ctrl+p или Ctrl+n — автодополнение команд языков программирования Ctrl+x Ctrl+f — файлы, они ищутся в текущем каталоге Ctrl+x Ctrl+d — дефайны Ctrl+x Ctrl+i — слова из текущего и открытых файлов Ctrl+x Ctrl+k — из словаря Ctrl+x Ctrl+] — все тэги Ctrl+x Ctrl+o — omni completion, работает замечательно с C, Python и т.д.
Поиск: При достижении конца файла поиск будет продолжен с начала.
f — Поиск следующего за f символа справа в текущей строке ; — Повторить поиск по f, следующее найденное совпадение в текущей строке / — Поиск текста по образцу вперёд ? — Поиск текста по образцу назад n — Следующее найденное совпадение N — Предыдущее найденное совпадение Ctrl+o — вернуться туда, откуда начали поиск Ctrl+i — вернуться обратно к найденному после ctrl+o % — Поиск парных скобок: (), [] или {}
Поиск и замена:
:s/было/стало — Поиск и замена только первого найденного совпадения в текущей строке :s/было/стало/g — Поиск и замена всех найденных в текущей строке совпадений :g/string/d Удалить все строки, содержащие "string”
:v/string/d Удалить все строки, не содержащие "string” :30,90s/было/стало/gc — поиск и замена с 30 по 90 строку по всей их длине, с подтверждением :%s/было/стало/gc — поиск и замена во всём файле с подтверждением.
То есть :s/ — текущая строка, :30,90s/ — диапазон, :%s/ — весь файл. g — во всей строке, c — с подтверждением, иначе только первое совпадение в строке, и без подтверждений. Можно не писать каждый раз команду заново, достаточно ввести : двоеточие и стрелками курсора вверх-вниз перебирать ранее введённые варианты. Выделение:
v — (visual) визуальный выбор, выделение фрагмента текста для операции над ним. Ctrl+v — выделение прямоугольных блоков. gv — Повторное выделение последнего выделенного фрагмента. d — удаление выделенного фрагмента c — Вырезать выделенный фрагмент в буфер обмена y — (yank) копирование выделенного фрагмента yw — копирование одного слова от позиции курсора до конца слова вместе с пробелом. p — (paste) вставка скопированного фрагмента vip — Выделить целиком текущий параграф (разделённый пустыми строками текст) vgU — выделить в визуальном режиме фрагмент и перевести его в верхний регистр. vg~ — Выделить в визуальном режиме фрагмент и ИНВЕРТИРОВАТЬ его регистр.
Комбинации ниже работают для выделенного фрагмента. Для одиночной строки нажать дважды. Изменить длину отступа с 8 на 4 можно через конфиг, либо введя в командном режиме :set tabstop=4 Почему-то не работают для комментариев # < (Shift+,) — Уменьшить отступ выделенного. > (Shift+.) — Увеличить отступ выделенного.
Файловые операции:
:w — сохранить изменения в текущий файл :w file.txt — сохранить в файл file.txt :w! file.txt — сохранить и перезаписать file.txt, если существует. :w~/file.txt — сохранить в файл file.txt в домашней папке :e — Переоткрыть текущий файл. :e file.txt — открыть файл file.txt. :ene — Создать новый файл. :ene file.txt — Создать файл file.txt.
Перед сохранением фрагмента, следует выделить его по клавише v, при входе в комстроку по : (двоеточию) в ней уже будет префикс выделения :'<,'> и вручную его писать не надо!
:'<,'>w file.txt — записать выделенный фрагмент в файл :'<,'>w! file.txt — записать выделенный фрагмент поверх уже существующего файла :'<,'>w>>file.txt — добавить выделенный фрагмент в конец файла :'<,'>!xclip -sel clip — вырезать выделение в буфер обмера X сервера. (требуется xclip) :'<,'>w !xclip -sel clip — копировать выделение в буфер обмера X сервера. (требуется xclip)
Небольшая справка о команде выше. Конструкция :<диапазон>!<команда оболочки> использует команду оболочки как фильтр — передаёт ей (на stdin) указанный диапазон строк, и всё, что команда запишет в свой stdout, использует как замену для указанного дипазона строк. Чтобы замены не происходило, можно воспользоваться командой :write (пробел после команды обязателен, иначе получите ошибку)
:<диапазон>write !<команда оболочки> имя данной команды для удобства можно сократить до одной буквы (w).
:r!xclip -o — вставить в текущую позицию курсора содержимое буфера обмена x сервера (требуется xclip)
:r file.txt — вставить содержимое файла file.txt в позицию ниже курсора
:r !uptime - вставить вывод команды в место под курсором
:r!ls — вставить вывод внешней команды ls. :!python3 % — запустить редактируемый файл в питоне
:call delete(expand('%')) | bdelete! — Удалить файл текущего документа и убрать его буфер с экрана
Настройки:
По уму настройки следует записать в ~/.vimrc (там они пишутся без двоеточия!) тогда не придется их вводить заново.
:set ic — IgnoreCase, игнорирование регистра при поиске или замене :set noic — вернуть регистрозависимый поиск или замену :set hls — Hlsearch, подсвечивать найденное :set nohls — НЕ подсвечивать найденное :set is — Incsearch, инкрементный поиск - отображение частичных совпадений при поиске :set nois — Отключить инкрементальный поиск, искать по enter. :set nu — показывать номера строк :set nu! — скрыть номера строк :set mouse=a — Использовать мышь для выбора окна, позиции курсора. :syntax on — подсветка кода
Разное:
Ctrl+g — Показывает строку статуса с именем открытого файла, номером текущей строки. Esc или Ctrl+C или Ctrl+[ — выход в командный режим. :e
Enter — Выход. Именно с ДВОЕТОЧИЕМ! Я сам долго не мог выйти. Решил,
что ':' это часть предложения, а не часть комбинации, которую нужно
набрать и долго жал 'q'. :e! Enter — Выход без сохранения :x и :wq — выход с сохранением, причём первая сохраняет только в том случае, если были изменения. :w! или :wq! принудительное сохранение в readonly файле, 2й вариант с выходом. ZQ — Моментальный выход без сохранения и подтверждения.
Настройки по умолчанию можно записать в конфигурационный файл ~/.vimrc Например без этого я не начну писать в vim ни одной программы на Python: set tabstop=4 # Длина табуляции set expandtab # Замена табуляции пробелами
Полезные хитрости:
:%s#>[^<]\+>##g — Очистить текст от HTML-тегов :%s/^\(.*\)\n\1$/\1/ — Удалить строки, повторяющиеся дважды :%s/\s\+$// — Удалить пробелы в конце строк, и строки из одних пробелов (link) :1,$ g/^$/ d — Удалить пустые строки :g/^$/d — Удалить пустые строки
Простое решение проблемы командного режима в русской раскладке, положить в файл ~/.vimrc с содержимым в одну строку: set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯЖ; ABCDEFGHIJKLMNOPQRSTUVWXYZ:,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz
Однако я заметил единственный минус - в правом нижнем углу перестают отображаться вводимые символы в режиме команд.
* * *
Вот эта пара строк сильно экономит время на копание в .vimrc " ## Edit .vimrc ## map ,v :vsp $MYVIMRC<CR> map ,V :source $MYVIMRC<CR>
Первая маппит на ,v открытие .vimrc в вертикальном окошке, а вторая просит VIM пересчитать файл.
* * *
О разнице, какой клавишей выходить в командный режим: Ctlr-C просто переходит в normal mode. Если на выход из insert mode
какими нибудь плагинами навешаны какие-нибудь хуки, то при нажатии
Ctrl-C vim их проигнорирует, а при нажатии Esc или Ctrl-[ запустит. (й)
* * *
Q (shift+q) — не режим ввода команд. Это переход в устаревший режим Ex, поддерживаемый только для совместимости. Пользоваться им не стоит. Для возврата в обычный режим наберите "visual".
Замечательный комментарий Jef239: Эх молодежь… Поработайте в mcedit на скорости в 300 бод — и поймете, зачем нужны командные редакторы вроде Edlin из MS-DOS или [url=https://en.wikipedia.org/wiki/TECO_(text_editor)]TECO[/url]. Ну или с данными на перфоленте или магнитной ленте. Как только операция сдвига экрана начинает занимать несколько секунд — командный режим становится очень удобным.
Vi — это наследник командного редактора ed. По сравнению с командными редакторами, двухрежимные — были большим шагов вперед.
Более того, двухрежимный редактор лучше чистого WISIWIG. Попробуйте пожить в чистом WISIWIG, без команд поиска, замены, перехода к строке по номеру…
Если вы сравните vi с другими командными и двухрежимными редакторами, то увидите, что как раз «нормы и концепций пользовательского интерфейса» у них общие. Ну скажем много общего с EDT из RSX-11M. Вот только эти концепции очень старые, вы с ними просто не знакомы. Например, у интерфейса навигации по эрану ноги растут от интерфейсов управления терминалами VT05 и VT52.
Даже на 9600, где перерисовка экрана занимала 2 секунды, двухрежимный EDT был удобнее WISIWYG редактор TED. Примерно до 38400 прокрутка экранов настолько медленна, что её избегают. И только со 115200 WISIWYG становится реально удобен.
вариант переключения раскладки. переключение по Ctrl + F.
В ~/.vimrc это оформлено так:
set keymap=russian-jcukenwin " настраиваем переключение раскладок клавиатуры по C-^ set iminsert=0 " раскладка по умолчанию для ввода - английская set imsearch=0 " раскладка по умолчанию для поиска - английская
" Переключение раскладок и индикация выбранной в данный момент раскладки --> " При английской раскладке статусная строка текущего окна будет синего цвета, а при русской - красного function MyKeyMapHighlight() if &iminsert == 0 hi StatusLine ctermfg=DarkBlue guifg=DarkBlue else hi StatusLine ctermfg=DarkRed guifg=DarkRed endif endfunction " Вызываем функцию, чтобы она установила цвета при запуске Vim'a call MyKeyMapHighlight() " При изменении активного окна будет выполняться обновление индикации текущей раскладки au WinEnter * :call MyKeyMapHighlight() " <--
Позволяет водить курсор по всему тексту вне зависимости от того, есть ли что-то в этом месте или нет. Виртуальный режим редактирования, который включается через комстроку: set virtualedit=all или в короткой форме: set ve=all
В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи.
Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.  
( Регистрация,   Вход).