Зачем нужна ещё одна, 1001я публикация на эту тему? Статей про vim и nano написано огромное количество, но как правило они касаются только одного из редакторов, либо представляют из себя общий обзор. Чтобы в одной были сжато описаны оба редактора, но при этом без углубления в дебри приведены все основные клавиши управления для полноценной работы, я не нашёл. Поэтому, почитав найденные материалы, я начал их конспектировать, так и родилась эта статья.




Любой текстовый редактор можно освоить «методом тыка». Но только не vim.

Чем nano лучше vim?

Из nano можно выйти без reset'а! (с) Интернет





Изначально я не планировал писать об обоих редакторах, а хотел сделать краткую справку только по 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 был пианистом

© из хабра-комментариев



Основой мне послужила статья на хабре: "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.



На этом всё.



Другие использованные ссылки:



Раз | два | три






Vim, немного крипоты





«у vi есть два режима: бибикать и всё портить»

©
Холиварненько

Изначально Vim разрабатывался для аппаратного терминала ADM-3A, он слева на фото.



Приведу несколько цитат перед статьёй, которые как бы намекают читателю: "— Ужаснись и беги. Слышишь смертный? Беги! И не говори потом, что тебя не предупреждали..."





Продвинутый

текстовый редактор — кошмар для случайного пользователя. Если его

удается в конце концов закрыть, то вздыхаешь с облегчением и твердой

уверенностью, что больше не будешь запускать эту программу ниразу в

жизни. Пожалуй, Vim нельзя просто запустить и начать работать —

требуется определенная подготовка. Зато стоит раз испытать его в деле и

поражаешься тому, как можно было без него обходиться.

© 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

:r file.txt — вставить содержимое файла file.txt в позицию ниже курсора

:r!ls — вставить вывод внешней команды ls.

:! ls — выполнить любую внешнюю команду, в данном случае ls



Настройки:



По уму настройки следует записать в ~/.vimrc (там они пишутся без двоеточия!) тогда не придется их вводить заново.



:set ic — IgnoreCase, игнорирование регистра при поиске или замене

:set noic — вернуть регистрозависимый поиск или замену

:set hls — Hlsearch, подсвечивать найденное

:set nohls — НЕ подсвечивать найденное

:set is — Incsearch, инкрементный поиск — отображение частичных совпадений при поиске

:set nois — Отключить инкрементальный поиск, искать по enter.

: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   — Удалить пустые строки



Приложение:



Обучающие карты расположения команд в картинках. Взято отсюда:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html





Lesson 1

Lesson 2

Lesson 3

Lesson 4Lesson 5Lesson 6Lesson 7



Решение проблем:

Простое решение проблемы командного режима в русской раскладке, положить в файл ~/.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“.



* * *

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


  1. Статьи на хабре:

    https://habrahabr.ru/hub/vim/


  2. Почему, ну почему, эти #?@! придурки используют vi? (отличная статья! А комменты просто жгут)

    https://habrahabr.ru/post/307084/


  3. Vim и кириллица: парочка приёмов

    https://habrahabr.ru/post/98393/


  4. Аж целую книгу запилили по этому vim, я удивляюсь. Нашёл на файлопомойке тут:

    http://mirrors.pdp-11.ru/_books/desktop%20soft/vim/


  5. Прямая ссылка на книгу:

    O'Reilly — Learning the vi and Vim Editors 7th Edition (перевод).pdf


  6. Книга «Просто о Vim» («A Byte of Vim») русский перевод.

    Скачать в формате .odt или .pdf


  7. Vimtouch под Android. Если готовый в googleplay:

    https://github.com/momodalo/vimtouch


  8. 100 команд vim, которые должен знать каждый

    http://scabere.livejournal.com/62886.html


  9. Окна и буферы — Навигация

    https://habrahabr.ru/post/28572/


  10. Vim Golf — Задачи и решения по vim

    http://www.vimgolf.com/


  11. Много приёмов работы с vim

    http://najomi.org/vim


  12. Настраиваем Vim под Python

    https://habrahabr.ru/post/74128/


  13. VIM как IDE для разработки на Python

    https://habrahabr.ru/post/224979/


  14. Vim как IDE для веб-разработки

    https://habrahabr.ru/post/53435/


  15. Окна и буферы

    https://habrahabr.ru/post/28572


  16. Многооконный режим редактирования файлов в Vim

    https://www.opennet.ru/tips/1714_vip_edit_text.shtml


  17. Хороший, почти как vimtutor, цикл видео уроков по vim.

    https://www.youtube.com/playlist?list=PLcjongJGYetkY4RFSVftH43F91vgzqB7U


https://habrahabr.ru/post/331600/
Клавиши и комбинации клавиш VIM
Моя шпаргалка по работе в Vim
http://najomi.org/vim
Арнольд Роббинс, Элберт Хана, Линда Лэмб "Изучаем редакторы vi и Vim" (7-е издание) 2013
Перевод справочника команд редактора vi из официального учебника Solaris
------------------------------------------------------------------
самое простое для новичка:

чтобы внести изменения в содержание файла в редакторе vi— необходимо:
  • нажать клавишу «i» или «Insert»
  • для выхода из режима редактирования — «esc»
  • для сохранения внесенных изменений — «Shift+:» затем «wq» и нажать «Enter»
  • чтобы выйти без сохранения — «Shift+:» затем «q!» и нажать «Enter»

можно также запустить в "ограниченном режиме"
rgvim

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 12:10 am
Powered by Dreamwidth Studios