Два в одном: как пользоваться Vim и Nano?

Upd. 9.7.2017: обновлён раздел про vim. Спасибо вимерам за ценные дополнения.

Вступительное слово


Зачем нужна ещё одна, 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


Поделиться публикацией

Похожие публикации

Комментарии 199

    –3
    mcedit для консоли нормальный редактор. nano тоже ничего (на случай если нет mcedit), а зачем vim и подобные я понять не могу. Зато понятно как они появились: скорее всего это были некие первые эксперименты с текстовыми редакторами, когда никаких устоявшихся норм и концепций пользовательского интерфейса в принципе не было; писали их программисты под свои какие-то очень узкоспецифические нужды и задачи. Надо автоматизировать какое-то действие — опа, есть свободная клавиша — быстро вносим в код самого редактора новый функционал, компилируем — работает! Мне это знакомо потому что я имел дело с софтом, написанным «самобытно» для специальных нужд, иногда еще советскими программистами. Все именно так: серьезная навороченная софтина, но совершенно нестандартный интерфейс. Почему? А потому что в этой конкретной узкоспециализированной сфере вот так сложилось исторически, и переделывать никто не будет — и заказчики привыкли, и программисты.
      +6
      Весь функционал вима направлен на то, чтобы пользоваться им без использования мыши. Отсюда многообразие команд. А из многообразия следует их изощренность, которая таковая лишь на первый взгляд.
      Если поверх прикрутить пользовательский интерфейс, функционал потеряет смысл.
        +4
        nano тоже работает без мыши. Я помню даже досовская среда разработки Turbo C/Pascal позволяла вполне комфортно работать без мыши. Просто вместо вменяемого TUI (Text User Interface) в vim применяется какая-то шаманская клавиатурная магия, возникшая стихийно на заре программирования, когда самого понятия «UI» еще толком не было.
          +3
          Так никто и не спорит, что nano без мыши работает. Но есть целый ворох того, что нужно помимо самого редактора для полноценной работы. Линтеры, подсветка синтаксиса, быстрая навигация по тексту, дерево папок проекта и прочее. Мне нравится, что вместе с вимом я имею весь комплект. Да, он появился не сразу, а сформировался постепенно за годы работы, но в этом и прелесть своего конфига — его можно загрузить куда угодно и удаленная машина за минуту имеет ту же среду, что и локальная.
          Практически вся «шаманская клавиатурная магия» укладывается в паттерн «сколько раз сделать — что сделать — с чем сделать». Честно, не представляю как UI может решить проблему огромного числа комбинаций, которые требуются по мере написания кода. И тем более, как он может быть полезен при необходимости работать удаленно.
            +1
            Линтеры, подсветка синтаксиса, быстрая навигация по тексту, дерево папок проекта и прочее.

            Где этого нынче нет? Кроме того, в IDE это сильно лучше, чем в виме. Вы в своём комментарии почему-то ни разу не упомянули модальный интерфейс. А это как раз киллер фича вима.

              0
              Потому что я использую tmux и мне не нужен модальный интерфейс вима.
              Где этого нынче нет?

              В nano. О нем речь в комментарии надо мной.

              Кроме того, в IDE это сильно лучше, чем в виме

              Лучше чем?
                0
                Потому что я использую tmux и мне не нужен модальный интерфейс вима.

                Создаётся впечатление, что tmux заменяет вам модальный интерфейс вима. Наверное вы хотели сказать, что вы используете tmux и отдельно, что вам не нужен модальный интерфейс вима, да?


                Про tmux вы, наверное сказали к тому, что IDE в консоль почему-то не завезли? Тут поспорить сложно и вим, конечно, выручает.


                Но вот по поводу того, что вам не нужен модальный интерфейс возникает вопрос. Как вы вообще используете vim? Постоянно в Insert mode? Но, судя по предыдущему комментарию у вас за плечами годы работы, неужели все они прошли в режиме вставки? Напишите, пожалуйста, подробнее, как вы работаете в виме.


                В nano. О нем речь в комментарии надо мной.

                Действительно. Тут тоже не поспоришь, конечно :).


                Чем подсветка синтаксиса и всё такое в IDE лучше, чем в виме?

                Во-первых там банально больше разработчиков трудится, во-вторых акцент именно на работу с кодом, сборку и всё такое. Дальше, конечно, надо индивидуально сравнивать с каждой IDE. Например, сравнить возвможности по рефакторингу в виме с плагинами и в Intellij IDEA.

                  0
                  Вы совершенно правы, а я неверно понял на счет модальности. Разумеется, если работать в одном insert, то непонятно, зачем вим нужен вообще.
                  Tmux для сплита экрана и для отдельных табов. В сплите можно открыть вим, может оставить консоль. Вообще, прелесть tmux — это возможность на удаленном сервере оставить сессию и подключиться к ней с другой машины, сохранив при этом всю структуру открытых окон.
                  А сравнение с ide всегда выходит однобоким, потому что говорящий либо работает только в ide и никогда не пробовал настроить среду vim под себя, либо, наоборот, всю жизнь просидел на виме/нано/емакс/тп, соответственно, не может рассуждать об ide.
                  Когда пробовал vue.js, возникла необходимость syntax highligh для .vue файлов. На канале slack пользователи разных ide регулярно на эту тему вайнили, потому что поддержки со стороны ide не было, приходилось ставить подсветку аналогичную .html, что было слегка не то. В то же время, плагин для вима был доступен с самого начала. Выглядит, наверное, как пример, высосанный из пальца, но ничего лучше у меня нет по причине отсутствия опыта работы в ide.
                    0
                    В то же время, плагин для вима был доступен с самого начала. Выглядит, наверное, как пример, высосанный из пальца

                    Пример замечательный. Всякие новые штуки быстрее появляются в виме и емаксе. В IDE почему-то позже.

              0
              Всё перечисленное безусловно полезно, но не в этом заключается соль вима. В первую очередь vim — это слепой десятипальцевый метод редактирования текста. Чтобы не повторяться, вот ссылка на мой развёрнутый коммент ниже.
              Хорошее видео про vim от Кирилла из Hexlet

                +1
                А если вы работаете с кириллицей, вычтите 2 пальца на регулярное, через слово, переключение раскладки, которое превратит работу с vim в ад.
                  0
                  А если вы работаете с кириллицей, вычтите 2 пальца на регулярное, через слово, переключение раскладки, которое превратит работу с vim в ад.

                  Переключение раскладки через слово, конечно, превращает жизнь в ад, но зачем, работая с кириллицей в виме, регулярно переключать раскладку?

                    0
                    А как иначе вводить команды?
                      0

                      Когда вы говорите "вводить команды", вы имеете в виду — работать в Normal Mode? Если так, то говоришь виму, чтобы ввод текста осуществлялся в кириллице, а в Normal Mode клавиши воспринимались как английские.

                        0
                        А как это «сказать vim`у»? Если прописывать в конфиге, как я писал в статье, то почему-то теряется отображение вводимых после двоеточия: команд.
                          0

                          Вот это написать в vimrc


                          set keymap=russian-jcukenwin

                          Теперь, когда язык ОС — английский, можно в Insert Mode нажать Control+^ и язык ввода станет русским. Ещё раз — Control+^ и язык ввода английский. На язык ввода в ОС это не влияет.

                            0

                            Я вместо этого просто создал себе дополнение translit3: встроенный режим полон проблем вроде не работающих при определённых условиях сочетаний клавиш, некоторые из них даже иногда исправляют. И это в дополнение к необходимости уметь печатать вслепую на двух раскладках, а также недоступности ряда ASCII символов из‐за разницы в количестве букв. (Конечно, использование данного дополнения из‐за «отсутствия необходимости уметь печатать вслепую на двух раскладках» означает, что вам придётся либо печатать весь русский текст в Vim, либо печатать его не вслепую, но меня это не особо смущает.)

                              0

                              Я не совсем понял. Дополнение ставит раскладку в виме наподобие фонетической? Или делает ещё что-то?

                                0

                                Скорее метод ввода, чем раскладка. Например, первое предложение в этом сообщении я писал как «Bolxshe metod vvoda, chem raskladka.» (потом переправил «Больше» на «Скорее»): как видите, ряд букв требует более одного символа для ввода. Если вы знакомы с vim-latex-suite и/или дополнением IMAP (первое использует второе), а также с Web‐сайтами, в которых можно вводить транслитом, то тут по реализации нечто среднее.


                                По идее, дополнение должно быть можно трансформировать в реальный метод ввода (вроде тех, что используются для ввода иероглифов), но тут опять возникнет проблема при переключении в нормальный режим…

                              0
                              1) А на что навешана эта комбинация по дефолту?
                              Ctrl+6 или Ctrl+^ навешан на что-то пишущее что «соседний файл не существует».
                              Если выполнить :tab ball то появляются закладки, и комбинация в текущей вкладке открывает зачем-то другую. И как-то глючно, логики я не понял, переключаюсь обычно по gt

                              2) Мне кажется неудобным запоминать ещё одну раскладку и ещё один переключатель внутри vim. Зачем столько лишних сущностей? Я пользуюсь системной переключалкой, у меня это CapsLock, и другими не хотел бы. И что это изменит? Две кнопки вместо одной жать для переключения? Вы не написали, что это избавит от необходимости смены языка на английский перед вводом команд.
                                0
                                1. Переключение в режиме редактирования, не в нормальном режиме.
                                2. langmap это что‐то вроде «по нажатию <C-^> создать привязки «a на ф, b на и, …». Т.к. привязки внутри Vim, то, разумеется, он может их не использовать для ввода команд. В этом главное отличие от случая с системной раскладкой: ни про какие внешние раскладки Vim не знает, получать коды клавиш «как есть» не умеет и, соответственно, не может переключить на раскладку us при переходе в нормальный режим.
                                  0
                                  даже если он сам в командном режиме английский себе включает, а при возврате к редактированию помнит текущую раскладку, то очень не хочется помнить ещё одну раскладку, и ещё одну переключалку. Это явно лишнее.
                                  Есть ли другие методы?
                                    0

                                    Можно взять Neovim и написать для него GUI на чём‐то вроде sdl — что‐то, что позволяет получить сканкод клавиши, а лучше «значение клавиши в раскладке по‐умолчанию». Вроде такая функциональность в основном имеется в игровых движках. Neovim упоминаю из‐за того, что в отличие от Vim, он позволяет писать UI на любом языке с поддержкой ввода‐вывода (либо unix sockets, либо stdin/stdout) и msgpack. Суть нового GUI в том, что в режимах, отличных от вставки (и смежных вроде замены) и командного Neovim будет получать клавиши на основе сканкода/из раскладки по‐умолчанию.


                                    Насколько я знаю, такой функциональности у существующих интерфейсов нет (и точно нет у «встроенного» интерфейса, использующего терминал). Не знаю, насколько сложно такое написать.

                                      0

                                      Хотя нет, так просто оно не пройдёт. Представьте себе вариант «пользователь напечатал <Esc>foa/<Esc>ащф при наличии привязки <Esc>x». Здесь, с одной стороны, GUI нужно отправить foa, с другой стороны, смена режима должна произойти только либо после отправки f/а, либо если пользователь подождёт &timeout времени. Соответственно, по‐хорошему, GUI нужно отправлять сразу оба варианта (и <Esc>foa, и <Esc>ащф), чтобы Neovim сам решал, какие клавиши как нужно интерпретировать, с другой стороны, ни Vim, ни Neovim не имеют двойных очередей ввода для разрешения такой ситуации.


                                      Хотя вероятность того, что патч с двойными событиями ввода примут в Neovim намного выше, чем в Vim (тем более, что у Vim весь GUI на C и в репозитории, а не сторонние приложения, общающиеся удалённо через msgpack), придётся сначала изменять именно сам Neovim на C и только потом писать GUI.

                                        0
                                        К сожалению не очень понял о чем вы пишите. О Neovim даже речи не шло, я хочу использовать простой vim. А зачем мне в консольном vim GUI не понимаю. Думаю я не один говорю по-русски, и проблему ввода в командном режиме на русской раскладке уже решили. Не понимаю, почему при первом решении из статьи:

                                        set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯЖ;
                                        ABCDEFGHIJKLMNOPQRSTUVWXYZ:,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz


                                        пропадает отображение вводимых по двоеточию команд внизу.
                                          0

                                          Затем, что единственный реальный способ решить проблему — либо начать получать в нормальном режиме сканкоды клавиш, игнорируя системную раскладку, либо как‐то получать значения клавиш в английской системной раскладке. В консоли такое просто невозможно, на моей памяти таким свойством обладали только несколько игр.


                                          set langmap по моему мнению какое‐то странное недорешение — такой вариант хорош, если всё, что вы пишете, вы пишете только в Vim — как вы сказали выше — это +1 режим с +1 способом переключения. Что хуже, последний раз когда я его пробовал он был слишком забагован.

                                            0
                                            А vim не может что ли получать скан коды? Тогда в чем проблема одинаково реагировать и на «d» и на «в», делов то. Это же текстовой редактор, он должен «знать», что бывают не только латинские буквы.

                                            Как именно работает set langmap я не знаю. Иначе бы знал, почему он глючит.
                                              0

                                              Откуда? Консольный не может в принципе, интерфейс терминала такого не позволяет. GVim — не знаю, есть ли в API gtk нужные возможности. И в обоих случаях вам нужно как‐то пробиться через Брама, а он может держать чужие патчи годами в todo.txt, но при этом (относительно) оперативно создавать свои реализации новых возможностей Neovim. С Брамом вам ещё сильно «поможет» тот факт, что консольный Vim таких возможностей будет точно лишён, помню он где‐то говорил, что предпочитает по возможности не создавать разницу между консольным и GUI вариантом (впрочем, разница была, есть и будет; это только ещё один минус).

                                                0
                                                Давайте, чтобы не рассеиваться, вообще не будем касаться GVim, а то я ещё вспомню что у меня кеды, и gtk не нужен™. Мы включим в беседу сравнение qt gtk, подключатся прочие члены партии «кедерасты против гномосеков», и основная тема будет надежно погребена.

                                                У меня ВОПРОС КО ВСЕМ: А как вы пишете в vim по-русски? Неужели каждый раз выходя в комрежим, жмете не только Ctrl+[ или Esc, а ещё сверяетесь с раскладкой, и при необходимости переключаетесь? Условимся что русским языком в тексте вы все же пользуетесь.
                                                  0

                                                  Я, как я уже писал, переключаю язык в режиме вставки с помощью Control+^, а системная раскладка, во время работы в виме, постоянно английская.

                                                    0

                                                    Вообще‐то везде вроде можно настроить не «переключить (toggle) раскладку по сочетанию X», а «при нажатии сочетания X использовать раскладку a, при Y — b». (Кстати, моему дополнению translit3 совершенно точно не хватает средств интеграции с чем‐то вроде powerline — «режимы» есть, индикации нет. Надо как‐нибудь исправить. И я сам пользуюсь именно «toggle» семантикой с ним.)

                                                      0

                                                      А, и кстати у меня i3, основной GUI Neovim на Qt, а чтобы нормально участвовать хотя бы в споре «GVim vs neovim-qt», не говоря уже про gtk vs Qt vs «настоящий программист сначала должен написать свой framework» я слишком мало знаю об их возможностях.

                                                        0
                                                        А как вы пишете в vim по-русски?

                                                        у меня вот такой вот сниппет в .vimrc с давних времён, хотя думаю что уже должны быть более универсальные и элегантные решения…

                                                        set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl\\;'zxcvbnm\\,.~QWERTYUIOP{}ASDFGHJKL:\\"ZXCVBNM<>

                                                        nmap Ж :
                                                        " yank
                                                        nmap Н Y
                                                        nmap з p
                                                        nmap ф a
                                                        nmap щ o
                                                        nmap г u
                                                        nmap З P
                                                          0
                                                          А видно ли в нижнем правом углу буквы вводимых команд?

                                                          Это пишется двумя отдельными строками?

                                                          nmap Ж :
                                                          " yank
                                                      0

                                                      Ещё относительно «одинаково реагировать на „d“ и „в“» — ни одна из раскладок не известна, какая является текущей тоже, поэтому Vim сам ничего сделать не сможет. Но вы сами можете сделать много‐много привязок вида nmap в d|nmap В D|vmap в d|vmap В D, вроде кто‐то так и решал проблему. Но здесь свои минусы: во‐первых, некоторые клавиши есть в обеих раскладках, но в разных позициях (двоеточие, вопросительный знак, точка с запятой, …). Во‐вторых, если у вас есть привязка nnoremap \foo …, то вам нужно создавать привязку nmap \ащщ \foo, с привязками nmap f а и nmap o щ ничего не заработает. Что хуже, то же относится к gt, только достать список из таких вот gt автоматически нельзя (разве что попробовать разобрать справку), тогда как список привязок можно добыть, распарсив либо execute('nmap'), либо (только в Neovim) через nvim_get_keymap('n').

                        +3
                        не мог пройти мимо такого невежества:
                        в vim применяется какая-то шаманская клавиатурная магия

                        это лишь кажется на первый взгляд и для людей без знания английского языка (такие ещё встречаются среди IT-специалистов?). для всех остальных большинство клавиатурных сокращений понятны и являются именно сокращениями, в отличии от менее понятных ctrl+c, ctrl+v и т.п.:
                        dwdelete word
                        gtgo to tab
                        cit/cibchange in tag / brackets
                        yyank
                        vvisual
                        ppaste
                        И множество других…
                          +4
                          Знаете, бывает попадаются legacy исходники, и в них вот такие же имена переменных, функций и т.д.: 1,2,3 буквы, которые что-то там, известное одному лишь автору, обозначают. И попробуй догадайся что это. Поубивал бы за такое.
                            0
                            ну тут нужно соблюдать баланс читаемости и краткости, или вносить расшифровку в комментарии при объявлении переменной. и ваш пример не совсем коррелирует с шоткатами vim, где любую непонятную комманду можно изучить в справке.
                            +2
                            Оно всё, конечно, так. Но порой система создания сокращений, сложившаяся в *nix сообществе меня убивает. Я, конечно, помню про ограничения длины строки и, как следствие, сокращения команд для того, чтобы вместить больше данных, но вот сокращения какого нибудь copy до cp мне никогда не понять на фоне команды mkdir в 5 символов, например. Ну то есть 4 символа для copy едят место почём зря, а 5 символов mkdir — нет? Сокращения уровня 2-ва и 3-ри.
                              0

                              Есть даже человеческие языки, в которых гласных букв нет (арабский, иврит).

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

                                  Да, но эти символы нередко просто не пишутся и потому приходится угадывать слово.


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


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

                                +1

                                mkdir до двух букв в MSDOS/Windows зато сократили, не волнуйтесь, хоть где-то справедливость торжествует.

                                  0
                                  Против cp ничего не имею против, но выписывать mkdir на её фоне и правда начинает бомбить)))
                                  И ведь во многих системах mkdir вроде бы сокращалась до md.
                                  0
                                  Спасибо, интересно.

                                  cit/cib — change in tag / brackets


                                  Со вторым ясно удаляет внутри (), а что делает первый?

                                  И почему-то не работает: c% — Вырезание выражения в скобках. (% этоShift+5)
                                    0
                                    Со вторым ясно удаляет внутри (), а что делает первый?

                                    не удаляет, а заменяет. cit — тоже самое, только «заменить текст внутри тэга» (html или xml), очень удобно. а удалить будет соответственно dib/dit (delete in brackets / tag).

                                    И почему-то не работает: c% — Вырезание выражения в скобках. (% этоShift+5)

                                    % — это не внутри скобок, это до следующий / предыдущей скобки (и других парных символов) под курсором (или ближейшей к курсору). подробней про этот оператор можно прочитать в справке :help %
                                    0
                                    Вот только yank притянуто за уши, лучше запомнить просто так.
                                    +2
                                    nano тоже работает без мыши.

                                    В nano нет модальности, это всё портит. Работать без мышки в vim сильно удобнее.


                                    Просто вместо вменяемого TUI (Text User Interface) в vim применяется какая-то шаманская клавиатурная магия, возникшая стихийно на заре программирования,

                                    Там не шаманская клавиатурная магия, а модальный интерфейс. Вот в nano, да — шаманская клавиатурная магия.

                                    +1
                                    Много разных объяснений, но что-то никто не обратил внимание на такую мысль: vim — это слепой десятипальцевый метод редактирования текста. Именно это и делает его отличным востребованным инструментом, чтобы эффективно редачить что-либо не отрывая рук от базового положения на клавиатуре. Также можно сравнить с игрой на музыкальном инструменте, примерно те же ощущения будут: когда уже выработана определённая моторика, то человек не думает о том как именно он играет на этом инструменте. Ещё важно понимать такую философию: все профи вимеры используют режим вставки текста только для того чтобы набирать/добавлять новый текст, а не редактировать существующий (исключение — разве что Backspace прямо в текущем слове).

                                    Подытожим, имхо эти пункты важны:
                                    • предпосылка для пользования вимом — необходимо владеть слепым десятипальцевым методом набора;
                                    • понимание в чём собственно преимущество — редактирование вслепую не отрывая рук, при помощи моторики, своего рода «играя аккорды» (а не разные плюшки, плагины, или прочие вещи которые обычно приводятся как аргументы);
                                    • использовать режим вставки текста только по назначению, иначе теряется весь смысл и это лишь приносит боль и страдание.
                                    • таки да, не каждый может стать музыкантом, а некоторым это и не нравится, о вкусах не спорят.

                                    Напоследок хорошее видео про vim от Кирилла из Hexlet

                                      0
                                      > но что-то никто не обратил внимание на такую мысль: vim — это слепой десятипальцевый метод редактирования текста.

                                      Это важно только для тех, кому важен собственно слепой десятипальцевый. А таких, по крайней мере у нас, не очень много. И для программирования это не обязательно. Не хочу поднимать отдельный флейм, но один знакомый успешный и даже знаменитый программист набирает двумя пальцами и предпочитает mcedit :)
                                        0
                                        Правильно, об этом же и речь. Логичный вывод напрашивается сам по себе: если человеку не нужен десятипальцевый метод набора, то ему не нужен и vim. При этом он может быть кем сам пожелает и пользоваться любыми редакторами которыми захочет, но vim ему не подойдёт, это будет просто мучение. Потому что не сможет задействовать самое главное преимущество — редактирование вслепую не отрывая рук, при помощи моторики, своего рода «играя аккорды».
                                          0
                                          > Логичный вывод напрашивается сам по себе: если человеку не нужен десятипальцевый метод набора, то ему не нужен и vim.

                                          А вот это уже ничуть не логично. Если из A следует B, то из не-A не следует не-B.

                                          > vim ему не подойдёт, это будет просто мучение

                                          Я набираю 4-6 пальцами, в зависимости от фазы Луны, но при этом в основном использую vim. И никаких мучений. Достаточно для контпримера?

                                          > редактирование вслепую не отрывая рук, при помощи моторики, своего рода «играя аккорды».

                                          Из использования «аккордов» ничуть не следует необходимость редактирования вслепую.
                                            0
                                            Спасибо, ваша точка зрения ясна. Но прошу, зрите в корень. В данном случае десятипальцевый является неотъемлемой частью философии вима, иначе человек не сможет использовать этот инструмент эффективно. Поэтому утверждение логично, надеюсь рано или поздно вы сможете осознать это. Ваш «контрпример» лишь ещё раз подчеркивает тот факт, что вы не используете главное преимущество этого редактора, микроскопом тоже можно гвозди забивать, если кому-то это нравится, пожалуйста. Видимо аналогия с «аккордами» вам не полностью понятна, также как и плюсы десятипальцевого, дальнейшее обсуждение просто бессмысленно и действительно скатывается у «флейм» вместо конструктивного разговора по теме.
                                              0
                                              > вы не используете главное преимущество этого редактора

                                              И что с того?

                                              > микроскопом тоже можно гвозди забивать
                                              > Но прошу, зрите в корень. В данном случае десятипальцевый является неотъемлемой частью философии вима, иначе человек не сможет использовать этот инструмент эффективно.

                                              А меня в принципе не интересует подобная «идеальная» эффективность. Это всё равно, что утверждать, что никто дома не использует молоток эффективно, потому что занимаются какой-то ерундой вместо курсов по сверхэффективному забиванию чего угодно куда угодно. Но обычно в доме таки есть молоток:)
                                              И в _такой_ Ваш корень я «зреть» не собираюсь.

                                              > дальнейшее обсуждение просто бессмысленно и действительно скатывается у «флейм» вместо конструктивного разговора по теме.

                                              Верно. Но заметьте, что среди тех, кто тут хвалил vim, на Ваши неоднократные «вопияния в пустыне» что-то отклика чуть менее, чем никак. Видимо, таки мало кого реально волнует это «главное преимущество». Можете подумать на досуге :) только лучше без глобальных выводов про человечество :)
                                                0
                                                Очень толсто, месье знает толк в троллинге :)
                                    +6
                                    Зачем нужен vim? Да затем, что он крайне удобен, если в нем разобраться. Я не говорю, что все срочно должны бежать и переучиваться, но везде, где Linux, то есть в сфере программистов, сисадминов и так далее, идет вечный спор между поклонниками emacs, vim и sublime (не говорю, что других нет или они не популярны, но главенствующие позиции занимают именно они), а это что-нибудь да значит. Насчет того, что vim — это последствие «неких первых экспериментов» могу сказать, что vim и сейчас активно развивается. Не так давно (вроде, сентябрь 2016 года) было глобальное обновление и вышла версия 8.0. На оффициальном репозитории vim в github более 7500 коммитов. Я уже не говорю про огромное количество плагинов, которые тоже активно пишутся и обновляются. Все это не очень похоже на самопальный проект, который чудом не загнулся на старте. Кстати, vim расшифровывается, как «Vi Improved» и его корни лежат в довольно известном редакторе vi (после появления vim он уже не так актуален, однако спрос на него есть, потому что vim идет не в любой сборке Linux, а вот на vi можно рассчитывать всегда). Говорить о vim можно много, тут проще отправить человека погуглить — раньше на Linux форумах не затухали Holy War'ы по поводу этих редакторов, так что там много чего можно почерпнуть. Скажу лишь, что vim очень хорошо настраивается. Я лично уже некоторое время предпочитаю vim любым IDE (исключение — VS в Windows из-за сказочного отладчика) и очень доволен. Всем советую попробовать.
                                      +1
                                      Мнение NeoCode спорное, я его тоже не разделяю, но прочитал с интересом. А зачем столько минусов насовали автору — не понимаю.
                                        –3

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

                                        +1
                                        Но возможно «мейнстрим» редактирования текста свернул куда-то не туда, а не vim? :) Точнее свернул-то он явно туда — порог вхождения максимально низок, но вот никак не могу согласиться с тем, что устоявшаяся концепция редактора текста эффективнее чем та, что представлена в vim'е. И уж точно не соглашусь с тем, что vim разрабатывался по принципу
                                        опа, есть свободная клавиша — быстро вносим в код самого редактора новый функционал, компилируем — работает!
                                        , в нем всё продумано и весьма логично (не с точки зрения того, кто привык к устоявшемуся принципу ввода текста конечно).

                                        Я не понимаю как можно не понимать зачем существует vim :) Лично я уже не понимаю как люди в обычных редакторах эффективно выполняют такие частые задачи (особенно в программировании) как например выделение/копирование/удаление текста в кавычках или скобках (в том числе {}, [], <>). В vim это делается за миллисекунды нажатием например `di"` (удалить все внутри кавычек) или например `ya(` (копировать содержимое внутри скобок вместе с самими скобками). Или например макросы. Как люди вообще живут без vim'овских макросов? А метки? Глобальные, локальные, да еще и с возможностью использовать их в командах…
                                          0
                                          опа, есть свободная клавиша — быстро вносим в код самого редактора новый функционал, компилируем — работает!
                                          , в нем всё продумано и весьма логично (не с точки зрения того, кто привык к устоявшемуся принципу ввода текста конечно).

                                          Далеко не всё «продумано и весьма логично». В Vim очень много legacy (настолько, что 100 % совместимый парсер VimL создать в принципе невозможно, т.к. есть настройки влияющие на то, как дальнейший код интерпретируется и интересные вещи вроде возможности написать execute "function Test()\nexecute 'if 1'\necho 1\nendif\nendfunction") плюс Брам периодически добавляет что‐то вообще без консультации с сообществом, без нормальных тестов и с неадекватными сообщениями об ошибках. Но новые изменения идут почти полностью в VimL, тогда как «нормальный» режим практически не изменяется, со времён Vi туда добавилось не так уж много. Намного больше добавилось в режим ввода, но продумано оно лучше. А именно с нормальным режимом и режимом ввода пользователь взаимодействует больше всего.

                                          +3
                                          Эх молодежь… Поработайте в mcedit на скорости в 300 бод — и поймете, зачем нужны командные редакторы вроде Edlin из MS-DOS или TECO. Ну или с данными на перфоленте или магнитной ленте. Как только операция сдвига экрана начинает занимать несколько секунд — командный режим становится очень удобным.

                                          Vi — это наследник командного редактора ed. По сравнению с командными редакторами, двухрежимные — были большим шагов вперед.

                                          Более того, двухрежимный редактор лучше чистого WISIWIG. Попробуйте пожить в чистом WISIWIG, без команд поиска, замены, перехода к строке по номеру…

                                          Если вы сравните vi с другими командными и двухрежимными редакторами, то увидите, что как раз «нормы и концепций пользовательского интерфейса» у них общие. Ну скажем много общего с EDT из RSX-11M. Вот только эти концепции очень старые, вы с ними просто не знакомы. Например, у интерфейса навигации по эрану ноги растут от интерфейсов управления терминалами VT05 и VT52.

                                          Даже на 9600, где перерисовка экрана занимала 2 секунды, двухрежимный EDT был удобнее WISIWYG редактор TED. Примерно до 38400 прокрутка экранов настолько медленна, что её избегают. И только со 115200 WISIWYG становится реально удобен.
                                            +1

                                            :)
                                            Да, было и такое. Приходилось поднимать сервера через консольные сервера RS-232 да еще и через мобильный телефон в до GPRS-ые времена (через CSD на скорости 9600 bit/s). В промежутках между откликами с серверной стороны успевал подумать что сделать следующим нажатием, чтобы соптимизировать работу...

                                              0
                                              GPRS в районе Сочи за пару лет до олимпиады — вечером обмен раз в 20 минут. Все таймслоты забивал голосовой трафик. Это октябрь, что там летом — страшно подумать.
                                              0
                                              Замечательный комментарий, позволяла бы «карма» [+] плюсанул. Я помню эти времена, связь через телефонную линию по терминалу с другим человеком для чата и обмена файлами, либо звонок на bbs. Сам держал такую. Нельзя было перегружать экран украшательствами, потому, что при плохой связи всё слетает в мешанину. Использовал два режима переключаемых оформлений Maximus bbs — голый tty, и соответственно ansi. Как сейчас на сайтах есть урезанный режим для чтения с мобилок, вроде того.
                                                0

                                                Сейчас при использовании ssh поверх gprs/edge не менее актуально (когда пинги достигают сотен миллисекунд, а то и целых секунд). Нужно не часто, но когда понадобилось — это просто спасение.


                                                Ну и всякий embedded, который вполне может использовать низкоскоростной uart на 9600-19200.

                                                0
                                                а зачем vim и подобные я понять не могу

                                                Он есть везде. Даже открывая старую солярку, я обнаруживаю там vi.
                                                Как сисадмин я только лишь по этой причине освоил vi.
                                                Прада потом вошло в привычку.
                                                  0
                                                  а зачем vim и подобные я понять не могу.


                                                  1. Без мыши все что угодно.
                                                  2. Гарантия не испортить текст, если вы умеете работать с vim. Важно для редактирования программ/конфигов и для медленной связи. Для администрирования серверов первым делом ставлю vim и mosh.
                                                  +7
                                                  >> как не растерять навыки, для каких целей его постоянно использовать, этот vim?
                                                  Очень просто — после освоения vim вы перестанете пользоваться другими редакторами.
                                                    –1
                                                    true :)
                                                      +1

                                                      Освоил vim. Каждый раз при необходимости воспользоваться (через ssh, например) – плююсь. Обычно код пишу в Sublime Text и в сравнении с ним у vim не вижу ни одного преимущества (лично для меня), кроме консольности.

                                                        –2

                                                        Sublime стОит >50$, а vi/vim бесплатен.

                                                          –1

                                                          Время потраченное на заучивание и применение всевозможных комманд и шоткатов в vim обойдётся явно дороже.

                                                          0

                                                          Просто вы просто не освоили vim ;)

                                                            0

                                                            Можно включить Vintage mode и считай из vim недалеко ушел

                                                              –1

                                                              Можно, только зачем? Лично для меня главный недостаток vim – наличие режимов и неинтуитивная схема управления. Вот если бы можно было наоборот – в vim отключить это всё – то, благодаря кастомизируемости и огромному количеству плагинов vim стал бы вполне себе альтернативой современным редакторам.

                                                              +1
                                                              >> Каждый раз при необходимости воспользоваться – плююсь
                                                              Об этом и речь. Из под палки, при необходимости и т.д. вы будете страдать вместо того чтобы пользоваться им в своё удовольствие. А почему плюётесь? Если вам не комфортно, значит вы не освоили vim.

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

                                                                Очень странная логика. Ещё мне некомфортно программировать на ходу – значит, я не освоил навык ходьбы?


                                                                Безусловно, vim выручает, когда нужно по-быстрому зайти на сервер и что-то поправить, или если надо что-то сделать за чужим компом, или ещё какие-то аналогичные ситуации. Но из-за этого использовать его по-дефолту, несмотря на все неудобства – не вижу смысла.


                                                                Ещё раз – про "неудобства" – это моё личное мнение, я вполне себе признаю, что кому-то в силу привычки vim кажется удобнее других редакторов.

                                                                  0
                                                                  >> Очень странная логика
                                                                  До вима я пользовался студией и другими подобными убогими редакторами/IDE. У каждого редактора (на разных платформах) свои кнопочки и кривости. Элементарное редактирование неудобно практически во всех.

                                                                  >> Ещё мне некомфортно программировать на ходу – значит, я не освоил навык ходьбы?
                                                                  Дерзайте:
                                                                  https://www.instagram.com/p/BSiHSdBlEPH/
                                                                    0

                                                                    VS тот ещё кошмар.


                                                                    Элементарное редактирование неудобно практически во всех.

                                                                    В Sublime Text + macOS редактирование очень удобно (при том, что удобство – вещь индивидуальная).


                                                                    Дерзайте

                                                                    Да, но зачем?

                                                              +8
                                                              Ну или потому, что не сможете выйти из вима
                                                                0

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


                                                                ~
                                                                ~                           VIM - Vi IMproved
                                                                ~
                                                                ~                            version 8.0.542
                                                                ~                       by Bram Moolenaar et al.
                                                                ~                    Modified by <cygwin@cygwin.com>
                                                                ~              Vim is open source and freely distributable
                                                                ~
                                                                ~                     Help poor children in Uganda!
                                                                ~            type  :help iccf<Enter>       for information
                                                                ~
                                                                ~            type  :q<Enter>               to exit
                                                                ~            type  :help<Enter>  or  <F1>  for on-line help
                                                                ~            type  :help version8<Enter>   for version info
                                                                ~
                                                                
                                                                  +2
                                                                  Это всё равно поможет не всем.
                                                                  Если пользователь случайно зашёл в режим редактирования, ":help" добавится в набранный им текст (про ESC ему ничего не сказали).
                                                                  Если же ему повезло и он всё-таки случайно вышел обратно в командный режим, но до этого уже что-то набрал, то на ":q" получит:
                                                                  E37: No write since last change (add ! to override)
                                                                  

                                                                  (нажатие "!" здесь тоже не поможет. Разве что F1 с уточнением:
                                                                     Get out of Vim:  Use ":qa!<Enter>" (careful, all changes are lost!).
                                                                  

                                                                  )
                                                                    +4

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

                                                                      0

                                                                      И на ctrl+c (или что там аналогичное на win) vim пишет Type :qa! and press <Enter> to abandon all changes and exit Vim. Если пользователь в режиме вставки, то на двойное ctrl+c.

                                                                      0
                                                                      Если откроется справка, какой-то утилиты, например во время apt-get upgrade, то не будет этой страницы с подсказками. Будет куча текста из файла справки утилиты.
                                                                      Подозреваю, что большинство попавших в vim не открывали целенаправленно через него файл.
                                                                      +1
                                                                      Ваш покорный слуга, написавший статью над комментами тоже сперва принял двоеточия за декоративный элемент оформления необязательного ко вводу. Когда методом гугления я понял, как выходить, то сперва схватился за голову и освоил nano, а затем через какое-то время родилась эта статья, и я перешёл на vim.
                                                                      0

                                                                      Т.е., vim — это Омск, только виртуальный! < /sarcasm>

                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                      +4
                                                                      Когда кроме ssh есть еще sftp или scp то да, бывает удобнее пользоваться чем-нибудь типа Notepad++.
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                      0
                                                                      :e! Enter или :x или :wq — Выход без сохранения
                                                                      :x и :wq — выход с сохранением, причём первая сохраняет только в том случае, если были изменения.
                                                                        0

                                                                        :w!/:wq! сохранение в файле, который "защищен от записи" до кучи.

                                                                        +6

                                                                        Nano для меня очень сложный, остался на vi.

                                                                          0
                                                                          > Основой мне послужила статья на хабре: «Nano: И всё-таки его придётся выучить»

                                                                          К счастью, не придется. И выкручивать пальцы в vi тоже не нужно. Потому что наконец-то появился редактор micro, и он гораздо ближе к пользователю, чем его именитые собратья.

                                                                          Страшно сказать, но в нем даже работает общий системный буфер обмена даже если присоединиться к хосту по SSH, и запустить micro удаленно:

                                                                          Настройка общего буфера обмена для редактора Micro, который запущен в удаленной SSH сессии

                                                                          Представляете, можно пользоваться привычными в DE клавишами копирования/вставки, выделять текст с помощью Shift+стрелки, а текст, при выделении строк, даже если он длинее или шире экрана, попадет в буфер обмена. Наконец -то в 2017 году появилась такая возможность в консольном текстовом редакторе.

                                                                          Micro тоже далеко до совершенства в плане интерфеса, но это уже хоть какой-то шаг в сторону человеческого опенсорчного консольного редактора.
                                                                            +4

                                                                            Представляете, захожу по ssh на домашний роутер (SOC со жменькой оперативки и прошивкой в 4M), набираю vi — и он работает. Набираю micro — и увы…
                                                                            Мысль понятна?

                                                                              +1
                                                                              Надо отказаться от всех редакторов, которые не поддерживает роутер?
                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                –1
                                                                                Большое спасибо за наводку. С нано у меня тоже какие-то странные косяки были при редактировании, сейчас уже не помню какие, но несколько раз «портил» конфиги при редактировании из-за непредсказуемой реакции на мои действия. Приходилось выходить без сохранения и начинать заново.
                                                                                Vim — это вообще неюзабельно. Фанаты, вы уж простите =)

                                                                                Ну а вообще лично для меня — консольные редакторы подходят только для «подправить что-то по-быстрому на удаленном сервере». Для полноценной работы таки нужно нормальное gui. И да, компьютер без мыши — неюзабелен в принципе для меня. Даже с тачпадом (а ноутбуки я в принципе не приемлю по эргономическим соображениям).
                                                                                +4

                                                                                Обидно, что любителей «дедушки» vi называют мазахистами. У vi есть одно приемущество, которое его для меня делает любимым инструментом — он есть во ВСЕХ *nix системах, с которыми приходилось работать, «из коробки». Я далеко не все его возможности знаю, но те, что запомнил 20 лет назад исполюзую регулярно. В 100% случаев в незнакой системе в любом конфигурационном файле им удается найти строку или нужный контекст и внести изменения. Я не задумываясь первой попыткой вбиваю vi и он всегда готов к работе (всегда есть в $PATH). Для многооконного редактирования с множественными undo почти всегда под рукой есть что-то более удобное.

                                                                                  +2
                                                                                  nano тоже есть везде. Даже в базовой установке аскетичного Arch Linux. Хотя ему немного меньше 20 лет, как подсказывает Википедия.
                                                                                    +2

                                                                                    Да, он много где есть, но не везде и не везде "из коробки"…
                                                                                    В медиаплеере Dune HD он действительно есть, а вот в прошивке для роутеров Asus (не стандартной) его нет.
                                                                                    И в dd-wrt его нужно отдельно ставить.


                                                                                    ASUSWRT-Merlin RT-N66U_3.0.0.4 Fri Jul 17 03:15:20 UTC 2015
                                                                                    admin@RT-4:/tmp/home/root# nano
                                                                                    -sh: nano: not found
                                                                                    admin@RT-4:/tmp/home/root# find / -name nano
                                                                                    admin@RT-4:/tmp/home/root#
                                                                                      0

                                                                                      Есть куча дистрибутивов, где его не окажется. Да и не Linux'ом единым, за пределами linux'а много систем, где в базе не будет nano.

                                                                                        0

                                                                                        Тем не менее, и тут у vi существенное преимущество: он входит в busybox.
                                                                                        Поэтому как бы не был nano "везде", vi будет гораздо "вездее".

                                                                                          0

                                                                                          Его не всегда собирают. Хотя, в этом случае часто есть elvis (совместимая реализация vi). Ну и ed + sed будут в наличии с ещё большей вероятностью. А зная vi вполне можно управиться с его "предком" ed.

                                                                                        +2
                                                                                        Не во всех он есть из коробки. В Manjaro например не было.
                                                                                          +1
                                                                                          То, что он есть везде, не делает его удобным. =)
                                                                                          Знать его, при соответствующей специфике работы, безусловно надо, хотя бы на базовом уровне. А вот любить imho не за что — времена терминалов на 2400бод, когда он был спасением, давно прошли, и концепция с ними устарела.
                                                                                            –1
                                                                                            Дружище, за 20 лет работы можно уже изучить что-то новое. Я конечно понимаю, сила привычки, лень, да и просто неохота развиваться дальше… Поверь, для работы с проектами за 20 лет сделано много хороших IDE, и подсветка синтаксиса у того же nano присутствует, и поиск работает нормально. Vi был хорош именно 20 лет назад, сейчас это просто динозавр обросший избыточной функциональностью.
                                                                                              +1
                                                                                              Поверь, для работы с проектами за 20 лет сделано много хороших IDE, и подсветка синтаксиса у того же nano присутствует, и поиск работает нормально.

                                                                                              Ну да, текст только очень неудобно редактировать, а так — всё хорошо.

                                                                                                0
                                                                                                Это кому как, о том и речь. Свое мнение о vim я высказал, для редактирования текста мне хватает nano.
                                                                                                  +2

                                                                                                  Ну, по вашему мнению нежелание переходить с Vim означает нежелание развиваться. Но в других редакторах хотя и добавилася подсветка синтаксиса и всё такое — редактирование текста какое было в блокноте, такое и осталось. Ни о каком развитии речи не идёт.

                                                                                                    –1
                                                                                                    Когда появился vim, не было выбора. Сейчас выбор есть: для редактирования текста я воспользуюсь простым редактором, я для редактирования кода — IDE с полным набором плюшек, для написания романа — текстовым процессором.
                                                                                                    Осознанный отказ использовать оптимальные инструменты для качественного выполнения поставленной задачи — вот что такое «нежелание развиваться». Vim уже никак не подходит под определение «оптимальный». Он слишком сложен для текстового редактора и недостаточно гибок для больших проектов.
                                                                                                      +4
                                                                                                      Когда появился vim, не было выбора.

                                                                                                      У Столлмана выбора, может быть, и не было. Поэтому он сделал EMACS. После этого выбор точно был :)


                                                                                                      Сейчас выбор есть: для редактирования текста я воспользуюсь простым редактором, я для редактирования кода — IDE с полным набором плюшек, для написания романа — текстовым процессором.

                                                                                                      Редактирование текста там везде такое, как в блокноте. Стрелочки, Control + C, Control + V, все дела.


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

                                                                                                      Только никто не отказывается от оптимальных инструментов. Одни доводят вим до состояния, когда его можно сравнить с IDE, другие вставляют в IDE режим редактирования текста как в виме.


                                                                                                      Он слишком сложен для текстового редактора и недостаточно гибок для больших проектов.

                                                                                                      А что вы имеете в виду, когда говорите, что он слишком сложен для текстового редактора?

                                                                                                        0
                                                                                                        Да, видимо Ви так напряг Столлмана, что он решил написать Емакс.

                                                                                                        Одни доводят вим до состояния, когда его можно сравнить с IDE


                                                                                                        А зачем доводить Вим до состояния IDE? Не проще грамотно использовать само IDE?
                                                                                                          +1
                                                                                                          Да, видимо Ви так напряг Столлмана, что он решил написать Емакс.

                                                                                                          Ну да, он так и сказал. Но теперь, повторюсь, выбор есть :)


                                                                                                          А зачем доводить Вим до состояния IDE?

                                                                                                          Чтобы пользоваться режимами.


                                                                                                          Не проще грамотно использовать само IDE?

                                                                                                          Зачастую проще написать плагин к IDE, который перенесёт туда куски от вима. Люди так и делают, да.

                                                                                                        +1
                                                                                                        для написания романа — текстовым процессором

                                                                                                        И этот человек смеет что-то говорить про "использование оптимальных инструментов"?

                                                                                                        0

                                                                                                        Вот что реально неудобно в vim — копипаста.
                                                                                                        Если он единственный редактор — одно дело. А если он открыт в консоле/собственном гуе, а рядом открыта куча других программ (десктоп), которые давно знают, что делать по нажатию Ctrl+C/Ctrl+V, vim на их фоне раздражает. Именно тем, что "не как все".
                                                                                                        Есть окошко с текстом, есть курсор — будь добр, реагируй как другие нормальные окошки с текстом и курсором! Все другие комбинации, как правило, используются гораздо реже, но эти....

                                                                                                          0
                                                                                                          Для единообразия работы в гуе берутся таки гуевые средства (тот же gvim).
                                                                                                          А Ctrl+C, Ctrl+V это конфликтные шорткаты — в отличие от Ctrl+Ins, Shift+Ins.
                                                                                                    +1
                                                                                                    Однако во всех хороших IDE есть vim-mode либо из коробки (например Idea предлагает использовать vim mode по умолчанию при первом запуске), либо в числе популярных плагинов. Наверно это для тех, кто никак не может переучиться на «современную» концепцию редактирования текста :)
                                                                                                      –1
                                                                                                      Да, это сделано для того, чтобы хоть как-то привлечь людей, ничего кроме vim не принимающих. Опять-таки, что эти моды дают, кроме знакомой комбинации команд/клавиш? Ничего. Все можно сделать и более простым (читай: НЕ vim-овским) путем.
                                                                                                      для тех, кто никак не может переучиться на «современную» концепцию редактирования текста

                                                                                                      Я так думаю, что если-бы копать лопатами было так удобно и производительно, экскаватор не изобрели-бы. По аналогии: если vim такой удобный, зачем придумывать более простые средства работы?
                                                                                                        +2
                                                                                                        Да, это сделано для того, чтобы хоть как-то привлечь людей, ничего кроме vim не принимающих.

                                                                                                        Это люди, которым нравится вим сделали для себя способы комфортно работать в IDE.


                                                                                                        Опять-таки, что эти моды дают, кроме знакомой комбинации команд/клавиш? Ничего. Все можно сделать и более простым (читай: НЕ vim-овским) путем.

                                                                                                        Моды дают режимы, а не только знакомые комбинации клавиш. И эти самые режимы это как раз то, почему людям нравится вим. Вим интересен режимами, а не фичами наподобие поиска файла по имени.


                                                                                                        По аналогии: если vim такой удобный, зачем придумывать более простые средства работы?

                                                                                                        Зачем учиться слепому методу печати, если можно просто смотреть на буковки? Зачем вообще наносить буковки на клавиши, если удобнее печатать вслепую? Для того, чтобы редактировать текст мог ребёнок без всякой подготовки.

                                                                                                          –2
                                                                                                          Режимами? Правда? А а что в них такого уникального? Возможность замены с подстановкой? Или копирование? Или поиск по шаблону? Или вы используете (если используете) такие корявые IDE, что они этого не умеют?
                                                                                                            +2

                                                                                                            А зачем вам клавиатура? Запустите экранную клавиатуру и вводите мышкой текст, комбинации клавиш. Или у вас такая корявая система, что экранная клавиатура этого не умеет?


                                                                                                            Вы не поняли сути. Она не в том, что можно делать с использованием режимов. Суть в том, как вы будете это делать. Режимы удобнее тем, что для всех этих вещей, во‐первых, достаточно клавиатуры, во‐вторых, используются более удобные комбинации, чем распальцовки на две…четыре клавиши с необходимостью двигать руку до стрелочек, а то и до мышки. Хотя можно найти и некоторые уникальные вещи — ваша IDE, к примеру, умеет «выдели отсюда и до строки frobnicate(foo);»? — модальный режим интересен не ими (и, вполне возможно, что именно ваша IDE такое‐таки умеет).

                                                                                                              –3
                                                                                                              Не думаю, что использование экранной клавиатуры для редактирования текстовых файлов такая уж плохая идея. На планшетах и ноутах-трансформерах даже мышки не надо. Удобство ограничивается размером экрана.

                                                                                                              Да, для работы в IDE мне не надо помнить здоровенный набор команд и порядок их ввода. Использование мышки здесь более интуитивно.

                                                                                                              Кроме того, двигаться все-таки надо, хотя-бы и за мышкой, а то можно совсем здоровье на этой работе потерять. :)

                                                                                                              И не говорите мне, что у вас нет лишнего USB порта под мышку, или ваша система настолько tiny, что все драйверы из неё вырезали, а vim оставили. Все, что написано вами выше — всего-лишь привычка, вы используете вим потому что вы ПРИВЫКЛИ его использовать, не более того.
                                                                                                                0
                                                                                                                Не думаю, что использование экранной клавиатуры для редактирования текстовых файлов такая уж плохая идея.

                                                                                                                Пробовали печатать на экранной клавиатуре не глядя на клавиши?

                                                                                                                  +1

                                                                                                                  Текущая проблема экранной клавиатуры — отсутствие вменяемых тактильных ощущений. Печатать 10ю пальцами вообще слабо представляется возможным.

                                                                                                                    0
                                                                                                                    Да, для работы в IDE мне не надо помнить здоровенный набор команд и порядок их ввода. Использование мышки здесь более интуитивно.

                                                                                                                    Либо вы пользуетесь IDE как простым редактором кода, либо постоянно будете скакать с клавиатуры на мышку.


                                                                                                                    Современные IDE для эффективной работы требуют помнить некоторый набор команд (часто с emacs-like комбинациями клавиш). Начиная от банальных сохранения файла/проекта, поиска, перехода к другим функциям/методам/структурам/классам, запуска/деплоя, операций в режиме дебаггера (step over/step into/run/continue/et cetera). И заканчивая всякими операциями рефакторинга (комбинации клавиш для не очень частых можно и не помнить, но помнить название и комбинацию для запуска find action).

                                                                                                                  +2
                                                                                                                  Режимами? Правда?

                                                                                                                  Правда :). Те, кому не нравится вим часто считают, что любители вима вынуждены мириться с режимами для того, чтобы воспользоваться другими фичами, которые предоставляет вим. Такими, как подсветка синтаксиса, автозамена и так далее. На самом деле плагины, которые реализуют эти фичи, зачастую пишут любители вима для того, чтобы иметь возможность продолжать пользоваться режимами. Потому что в других редакторах, в которых есть эти фичи режимы часто отсутствуют.


                                                                                                                  А а что в них такого уникального?

                                                                                                                  Судя по следующим вопросам вы хотели спросить не чем уникальны режимы, а что такого можно сделать режимами, что нельзя сделать без них. Вы спрашиваете про замену с подстановкой, копирование и поиск по шаблону — всё это можно сделать без режимов. Режимы просто позволяют делать это не убирая рук с home row и не зажимая дополнительный клавиши-модификаторы, что очень приятно.


                                                                                                                  Повторюсь, ситуация не обстоит так, что режимы предоставляют какие-то такие офигенные фичи, что ради них пользователи готовы терпеть боль от использования режимов. Режимы просто приятно использовать.

                                                                                                                    –2
                                                                                                                    Повторюсь: вы используете Vim не потому что он такой хороший, а потому что вы привыкли его использовать.
                                                                                                                      +1

                                                                                                                      Вим на самом деле неудобен, но те, кто им пользуются к нему привыкли? Режимы это тоже на самом деле неудобно, но те, кто ими пользуется, этого не замечают — без режимов им было бы легче жить? А декларируемое пользователями удобство это иллюзия? И, если пересадить пользователя вим за другой, более удобный редактор и не давать доступа к виму месяца два — он привыкнет к хорошему и обратно к виму вернуться не захочет?


                                                                                                                      Я правильно понимаю вашу точку зрения?


                                                                                                                      Если да, то помогите мне сделать её более научной :). Как можно доказать, что это не так? Что режимы в виме на самом деле удобнее?

                                                                                                                        –2
                                                                                                                        Давайте почитаем отзывы. В большинстве своем они сводятся к следующему: «попробовал первый раз вим, потерялся/не понравился/отстой. Потом пришлось работать — привык, теперь все норм». Ничего не напоминает? Пользователям НЕ НРАВИТСЯ вим. Они вынуждены в нем работать по тем или иным причинам. А потом они ПРИВЫКАЮТ.

                                                                                                                        Следуя вашей логике, возможен и такой эксперимент: пользователь не работает в вим, но имеет опыт работы в другом любимом редакторе, вынужден пользоваться вим в течении месяцев двух. Потом у него будет возможность вернуться к своему родному и привычному — он останется работать с вим?

                                                                                                                        Или вы не привыкли использовать режимы в вим и для вас это каждый раз поиск правильной команды в мане?

                                                                                                                          +4

                                                                                                                          Вот этот сценарий:


                                                                                                                          «попробовал первый раз вим, потерялся/не понравился/отстой. Потом пришлось работать — привык, теперь все норм».

                                                                                                                          и эксперимент, который вы предложили


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

                                                                                                                          Это же один и тот же кейс. И, по вашим же словам, пользователи привыкают и остаются на виме. Или у людей из первого кейса нет возможности вернуться к своему редактору?


                                                                                                                          И ещё мне немного неясно. Это вот этот эксперимент вы предлагаете для того, чтобы отличить тех, кому кажется, что им удобно от тех, кому на самом деле удобно. У тех, кто откажется от вима при первой возможности — были иллюзии, а у тех, кто не откажется — настоящие положительные ощущения от удобства?

                                                                                                                            –1
                                                                                                                            Это вы предположили, что они в нем останутся. Я предполагаю, что они вернутся к своему привычному редактору.
                                                                                                                            К вам вопрос: у вас был любимый редактор до того, как вы стали пользоваться вим?

                                                                                                                            Иллюзии? Это уже из разряда метафизики. Может быть, иллюзии это ощущение удобства вим? И те, кто отказался от его использования это поняли? Обсуждать это дальше не имеет смысла.

                                                                                                                            И вы не отвели на мой вопрос: вы привыкли использовать вим?
                                                                                                                              +2

                                                                                                                              Итак. Эксперимент такой:


                                                                                                                              Заставляем пользователя какое-то время (пусть 2 месяца) пользоваться только вимом. Потом возвращаем ему любимый до этого редактор. И, если он продолжит пользоваться вимом, или включит в своём любимом редакторе модальный режим — значит ему это по настоящему удобно. Если нет, то удобство от использования режимов — это просто иллюзия. Правильно я всё понял?


                                                                                                                              Иллюзии? Это уже из разряда метафизики. Может быть, иллюзии это ощущение удобства вим?

                                                                                                                              Ну да, я так понял, что вы хотите сказать, что удобство, которе создаётся при использовании vim — это просто иллюзия. А на самом деле человек банально привык к неудобному.


                                                                                                                              К вам вопрос: у вас был любимый редактор до того, как вы стали пользоваться вим?

                                                                                                                              Ну как у всех, наверное. EmEditor был и Notepad++. Код что тогда писал в Идее, что сейчас пишу.


                                                                                                                              И вы не отвели на мой вопрос: вы привыкли использовать вим?

                                                                                                                              Привык, конечно. Не столько к виму, сколько к модальному редактированию. Очень удобно.

                                                                                                                                0
                                                                                                                                Сознательно перешел с Sublime на вим. Далее было несколько недель постепенного привыкания к новым командам. Именно постепенного, потому что десяток базовых, которые дали мне возможность вернуться к скорости работы в Sublime, я выучил за первые пару часов. Принудительно возвращался к Sublime дважды, когда нужно было поработать на чужом ноуте. И да, то, что я привык делать руками в виме, мышкой в визуальном редакторе делается намного дольше.
                                                                                                                +4
                                                                                                                Все можно сделать и более простым (читай: НЕ vim-овским) путем.


                                                                                                                Более простой != более эффективный. Например взять мышь, выделить текст от одной скобки до другой, затем выбрать в выпадающем меню пункт «вырезать» проще чем запомнить команду `di(`, но уж точно не эффективнее.
                                                                                                              0
                                                                                                              Дружище, за 20 лет работы можно уже изучить что-то новое.

                                                                                                              Спасибо, кэп! Только, я не говорил, что умею только в vi… (X)emacs мне для разработки на Perl вполне хватало.
                                                                                                              В системах без монитора, мыши и кнопок, мне не нужны другие редакторы. Я ни в коем случае не принижаю нужность удобного IDE. Просто, я давно не занимаюсь разработкой и мне не надо верстать "Войну и мир". Для администрирования *nix систем вполне хватает vi. Ставить кучу лишних пактов в систему с изначальным конфигом "kernel only" не хочется. Не все железки имеют доступ в Интернет. Таскать пакеты на "дискетках" не удобно. Делать backdor не хочется. Не для всех систем есть место куда можно что-то поставить.

                                                                                                                –1
                                                                                                                Всегда пожалуйста, приходите ещё!
                                                                                                                что умею только в vi

                                                                                                                ну именно так оно и прозвучало.
                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                              0

                                                                                                              Не нужно передергивать. Для программирования уже давно есть соответствующие среды разработки (под все системы). Помнится в далеком прошлом для программирования на Perl я использовал (x)emacs. В принципе было довольно удобно.
                                                                                                              Обсуждаемые редакторы, IMHO используются в основном администраторами (для редактирования конфигов).

                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                  +2
                                                                                                                  В общем получу я ещё кучу минусов и карму загоню ещё дальше.

                                                                                                                  И вполне заслуженно как минимум за:


                                                                                                                  Тут практически нет разницы, и только один диагноз Vim мозга.
                                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                      +2
                                                                                                                      Но желание тащить за собой устаревшие концепции разработки в современную IDE

                                                                                                                      Не понимаю о чем вы. Vim плагин в IDE никак не влияет на концепцию разработки — просто способ редактирования текста. С тем же упехом можно заявить, что использование Chrome для гугления позволяет писать более эффективный код чем тот, что вы погуглите с IE.

                                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                          0

                                                                                                                          Я про консольный Vim ничего не говорил и необходимость IDE для разработки не отметал.


                                                                                                                          Далее:


                                                                                                                          1. Vim — текстовый редактор.
                                                                                                                          2. Текстовый редактор является неотъемлемой частью IDE

                                                                                                                          Если разработчик пользуется текстовым редактором эффективно (и тут уже не важно каким), то соответствующий плагин не может снизить его эффективность если он не ломает того функционала (автодополнение, рефакторинг, подсветка синтаксиса и пр.) который предоставляет базовый текстовый редактор в IDE.

                                                                                                                            +1
                                                                                                                            Я много раз сталкивался негативными последствиями работы программистов консольного Vim

                                                                                                                            а поведайте примеры, пожалуйста :) для эрудиции
                                                                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                0

                                                                                                                                Чтобы сэкономить время на обьяснения, посмотрите первые минут 15 из видео в этом комменте и расскажите, что вы об этом думаете.


                                                                                                                                Линтера пропустившего простую опечатку потом попавшую на продакшен сервер и конечно же потушивший его к чертовой бабушке.

                                                                                                                                А у вас все сразу в продакшн?

                                                                                                                                  +3
                                                                                                                                  Я вот не вижу ничего смешного чтобы снести основную ветку git в продакшен репозитории на сервере. А потом сослаться в на ошибку в каком то плагине.
                                                                                                                                  Я тоже не вижу )) но у меня тут сразу вопрос к организации процесса: как программиста, да со своими плагинами и конфигами, пустили на продакшн?

                                                                                                                                  Линтера пропустившего простую опечатку потом попавшую на продакшен сервер и конечно же потушивший его к чертовой бабушке.
                                                                                                                                  а как же тесты?

                                                                                                                                  А потом искавший её два часа.
                                                                                                                                  а как же git log?

                                                                                                                                  Вечно срывающиеся сроки проекта.

                                                                                                                                  и во всём этом виноват получается vim? Ооок ))
                                                                                                                                    +2

                                                                                                                                    Я как‐то не вижу, что такого специфичного для Vim в «ошибке в плагине» (90% что плагин тут не причём, просто люди не любят признавать свои ошибки), линтере и срыве сроков. Настраивать (скорее, писать дополнения) можно и IDE. И вообще вы скорее описали не Vim’еров, а «неопытных разработчиков», совмещённых с неграмотными админами (где CI и запрет на force-push в основную ветку?).

                                                                                                                                      +3
                                                                                                                                      Я вот не вижу ничего смешного чтобы снести основную ветку git в продакшен репозитории на сервере.

                                                                                                                                      Я тоже не вижу. Странно, что такая возможность у разработчика есть.


                                                                                                                                      А потом сослаться в на ошибку в каком то плагине.

                                                                                                                                      Ошибка может быть и в плагине к IDE.


                                                                                                                                      Линтера пропустившего простую опечатку потом попавшую на продакшен сервер и конечно же потушивший его к чертовой бабушке.

                                                                                                                                      Программист допустил опечатку, юнит тестов видимо нет, CI видимо нет, банального тестирования видимо нет (иначе опечатка не потушила бы сервер, а сделала бы что-то не такое масштабное). У вас проблем гораздо больше, чем программисты, которые пишут в Vim.

                                                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                +3
                                                                                                                                Не вижу ничего негативного во фразе объясняющий образ мышления.

                                                                                                                                Вы не могли бы привести пример фразы "что-то там головного мозга" и чтобы это что-то подразумевалось не в негативном ключе? И чтобы те, кто это что-то делает подразумевались в нейтральном ключе?


                                                                                                                                Да и как я уже говорил сообщество Vim плохо переносит критику.

                                                                                                                                Ну вы попробуйте в топике, посвящённом особенностям использования Intellij IDEA написать про IDE головного мозга и посчитайте минусы :). А потом напишите, что не видите ничего негативного во фразе объясняющий образ мышления и посчитайте минусы ещё раз :).

                                                                                                                                +2

                                                                                                                                Двачую. Необоснованное оскорбление людей — надёжный способ хабросуицида.

                                                                                                                                  +2
                                                                                                                                  Вот корпишь неделю, материал там собираешь, пишешь статью про оба редактора, не противопоставляя один другому, и всё равно найдется кто-нибудь, кто напишет, что лучше бы написал, «как ими не пользоваться», и тот кто диагноз «vim головного мозга» поставит…
                                                                                                                                  Скажите как повысить себе карму, хочу присоединиться к кармовойнам)
                                                                                                                                    0

                                                                                                                                    Я заметил на хабре как минимум 2 темы, которые вызывают жуткий холивар в комментах:


                                                                                                                                    • Vim
                                                                                                                                    • Unix way

                                                                                                                                    Под некоторыми статьями новые комменты появляются даже месяцы спустя.

                                                                                                                            +1

                                                                                                                            Для всех современных IDE есть vim-плагины, сюрприз-сюрприз. Например, IdeaVIM для всех JetBrains-овских IDE.


                                                                                                                            Изучать вас никто не заставляет, а рассуждения о бесполезности оставьте при себе. Мне полезен — я с ним работаю эффективнее, чем без него, двух-трехбуквенные комбинации всегда будут быстрее, чем позиционирование курсора. Вам бесполезен — ну и отлично, никто не заставляет.

                                                                                                                            0
                                                                                                                            Если нужен не-vi-like редактор, всегда сношу nano и ставлю joe. В отличие от nano, у него управление в разы понятнее, и достаточно удобно.
                                                                                                                            Но в реальности привык использовать vim для всего, где не нужно IDE с полным набором уже специфичных плюшек вроде рефакторинга.
                                                                                                                              +1
                                                                                                                              В PhpStorm есть плагин IdeaVim. Я им пользуюсь с удовольствием. Вкладки по привычке переключаю не Ctrl+Tab, а gt. Фолдинг — zM, zo. Ctrl+w,v — окна. Выделение блоков, с инкрементальным поиском, с регулярками — всё есть.
                                                                                                                              До того, как появился плагин, я правда чувствовал себя несчастным, ведь надо было учить встроенные команды редактора IDE. Кто пользовался Emacs или Vim хотя бы пару лет, тот поймёт.
                                                                                                                              Сравнивать Vim с IDE, если надо не найти и подправить код на продакшне, а разрабатывать — наверное, не стоит.
                                                                                                                              Знать хотя б азы — однозначно полезно. А то, говорят, от мышки туннельный синдром.
                                                                                                                                0

                                                                                                                                А для VisualStudio Есть бесплатный VsVim (и платный ViEmu, но особых преимуществ я у него не смог обнаружить). Интегрируется не идеально, но вот уже который раз после переустановки студии ставлю его, значит есть польза;)
                                                                                                                                Особенно он выручает при работе с ноутбука, когда есть только тачпад и нельзя мышкой вжух-вжух.

                                                                                                                                0

                                                                                                                                Где бы найти наклейки на клавиатуру с командами vi?

                                                                                                                                  0

                                                                                                                                  А зачем они? Я основные команды помню, потому, что они интуитивно запоминаются:
                                                                                                                                  i — Insert
                                                                                                                                  a — Append после текущего символа
                                                                                                                                  SHIFT i — Insent в начало строки
                                                                                                                                  SHIFT a — Append в конец строки
                                                                                                                                  CTRL f — Forward (пролистывание на страницу) эти же команды можно использовать в команде man и more
                                                                                                                                  CTRL b — Backward (пролистывание на страницу назад) эти же команды можно использовать в команде man и more
                                                                                                                                  w — Write
                                                                                                                                  q — Quit
                                                                                                                                  set nu — пронумеровать строки (удобно если в логах пишут номер проблемной строки)
                                                                                                                                  dw — Delete World
                                                                                                                                  dd — удалить строку (не знаю что значит второе d. я, просто, это помню)
                                                                                                                                  Стрелками уже давно можно перемещать курсор (раньше это делалось кнопки H J K L (вверх, влево, вниз, вправо) почти как в играх)

                                                                                                                                    0

                                                                                                                                    Команды поиска от vi (/ и ?) тоже частенько использую в man и more. Без них не знаю как бы что-то искал…
                                                                                                                                    Еще непосредственно из команды more можно перейти в режим редактирования в vi (жмем v из more).

                                                                                                                                    0
                                                                                                                                    А зачем? ИМХО без навыков слепого десятипальцевого набора смысла в VI крайне мало.
                                                                                                                                      0

                                                                                                                                      Точно. Хотя есть полноценный VimTouch в андроиде.

                                                                                                                                        0

                                                                                                                                        Для "десятипальцевого" был Lexicon, а сейчас есть Word, Wordpad, Pages и масса других.
                                                                                                                                        Смысл в vi в том, что он есть во всех (тут правда, сказали что не во всех) *nix системах и всегда можно поправить конфиг и вывести систему из "штопора". Никто не говорит, что в нем нужно верстать "Войну и мир". Правда, если бы у жены Л. Толстого (она переписывала труды) был хотя бы vi, было бы не мало пользы.

                                                                                                                                      +1

                                                                                                                                      В МИФИ когда были лабораторные по Фортран код по методичкам предлагалось писать в Vi (и через ssh)… И это при том, что специальность — электроника, а те двое из моей группы (один из них я), кто реально мог писать код в консоли (имел опыт администрирования linux по ssh), приходили по большей части только на сдачу лабораторных и не желали использовать Vi, потому что знали, что это такое и также знали как его не использовать (конкретно я собрал и залил себе статический бинарник с Vim на случай, если во время сдачи нужно будет что‐то менять).

                                                                                                                                        0

                                                                                                                                        Дискуссия переходит в "холивар"… Складывается ощущение, что кто-то собирается блокировать vi, vim, nano и др., как это собираются делать с VPN и менеджерами. Вопрос не в том, кто что предпочитает, а в том, что тут мы пока вольны использовать то, что больше нравится. У каждого из редакторов есть плюсы и минусы, причем у каждого свой набор и того и другого.

                                                                                                                                          +1

                                                                                                                                          Я тут где‐то предлагал что‐то блокировать? Я вообще‐то сам Vim использую. Мне просто не понравилась та ситуация, а здесь я показал, что у кого‐то может быть и такой первый опыт с Vi (точнее, там была обычная «крошечная (tiny)» сборка Vim). Не думаю, что он кому‐то понравился: tiny Vim даже не все пользователи Vim переваривают, тем более с настройками по‐умолчанию (т.е. в режиме совместимости), а уж те, кто с модальными редакторами не работал, и подавно.

                                                                                                                                          0

                                                                                                                                          В мои студенческие годы, когда я подрабатывал на кафедре Информатики, студенты на дискетах тоже притаскивали свои редакторы (включая lex.exe) и мамой клялись, что без них не могут редактировать в qbasic (quickbasic). Приходилось делать внушение и показывать, что при сохранении файлов в них частенько оказывалась куча дополнительного мусора, который был понятен только этому редактору. Спасало только то, что сеть была на бездисквых станциях, а на сервер можно было писать только в один раздел из которого нещадно выметались все программы. Так мы во времена aidstest боролись с вирусами...

                                                                                                                                          0
                                                                                                                                          Доктор, я тащусь от edlin.exe, скажите, это лечится?
                                                                                                                                            0
                                                                                                                                            !!!
                                                                                                                                            Тем, кто не помнит хотя бы радость перехода от 5-дюймовых дискет на 3-дюймовые, трудно будет понять юмор во фразе: «Windows: От людей подаривших вам EDLIN!»
                                                                                                                                              0
                                                                                                                                              5.25" у меня сохранилось стопка длиной см 50, и почти все (ZX-Spectrum диски 320Kb, IBM диски 1.2Mb) рабочие. А 3.5" ранние эпохи бума ещё ничего, а в последние 90е годы такое гвно стали выпускать, что все размагнитились, поэтому радости перехода предпочел сразу флешки.
                                                                                                                                                +1
                                                                                                                                                Да, TR-DOS forever) Из-за бага/фичи команды чтения сектора я смог тогда сотворить программу для Спекки ( у меня был «Байт» — брестский клон 48-го), читавшую файлы PC-шных 720-кбайтовых дискет. А моя первая 64-Мбайтная флешка до сих пор в строю!
                                                                                                                                                  +1
                                                                                                                                                  Ну не такой уж forever этот TRDOS) Для игр — да, а для работы (код, тексты) предпочитал iS-DOS. Там такой мощный хоткейный редактор, что после него никакие nano-vim не страшны. Просто deja vu, что вернулся туда) И подобие командного режима как дополнительного аппендикса в isdos editor было. Вот если бы как в vim реализовали, а не через тернии, то гораздо удобнее было бы — сейчас уже понимаю.

                                                                                                                                                  Сейчас у меня в строю и используется zx-evo.

                                                                                                                                                    +1
                                                                                                                                                    Мой «Байт» погиб в неравной борьбе с перепутанной в спешке полярностью питания. Дискету с IS-DOS я заполучил незадолго до этого, поэтому поработать с ней толком не успел :-(
                                                                                                                                            0
                                                                                                                                            Кто-нибудь юзает хабрахоткеи?
                                                                                                                                            p.s. Хабр любит vim
                                                                                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                                0
                                                                                                                                                Вы ради любопытства просто полазьте по гитхабу, то что там есть ни одной IDE не снилось.

                                                                                                                                                Как там с плагинами для рефакторинга? Ну банальные extract function/method, например?


                                                                                                                                                Disclaimer: пользуюсь и vim и IDE от JetBrains с плагином IdeaVim.

                                                                                                                                                +1
                                                                                                                                                Два в одном: как пользоваться Vim и Nano?

                                                                                                                                                Напишите пожалуйста статью "Как не пользоваться Vim и Nano"

                                                                                                                                                  +1
                                                                                                                                                  А зачем кому-то читать про то, чем он не хочет пользоваться?

                                                                                                                                                    0

                                                                                                                                                    Затем, что ему приходится этим пользоваться, но хотелось бы от этого уйти. Есть какие-то более привычные альтернативы консольных текстовых редакторов под linux?

                                                                                                                                                      0
                                                                                                                                                      Если не нравится vim, nano, то чем не угодил mcedit? там и помнить ничего не надо, есть меню.
                                                                                                                                                      А знать все консольные редакторы невозможно, тогда не останется времени научиться толком уметь работать хотя бы в одном из них. Поэтому я даже emacs осваивать не буду, зачем, когда трех и так с избытком на все случаи жизни хватает.

                                                                                                                                                  +1
                                                                                                                                                  После входа в vi:

                                                                                                                                                  1)Для начала редактирования нажимаем «i»
                                                                                                                                                  2)После завершения всех изменений нажимаем ESC
                                                                                                                                                  3)Теперь для выхода с сохранением вводим ":qw" и Enter
                                                                                                                                                  4)Если не хотим сохраняться — ":q" и Enter

                                                                                                                                                  Всё. Вся боль людей.
                                                                                                                                                    +2
                                                                                                                                                    4) «q!»
                                                                                                                                                      0
                                                                                                                                                      да, нюанс:

                                                                                                                                                      1) Если вы что-то уже изменили, то выход без сохранения надо выполнить так — «q!» (!- это типа force)
                                                                                                                                                      2) Я опечатался в команде сохранения изменений — надо ":wq"
                                                                                                                                                    0
                                                                                                                                                    Опять перечислили команды, а как ими пользоваться не объяснили.

                                                                                                                                                    Опишите, какими командами пользуетесь чаще всего и порядок действий. Неужели удобно каждый раз переключаться между командным и модальным режимами?
                                                                                                                                                    Если в Notepad++ можно зажать Shift и стрелками выделить текст, затем его можно легко скопировать, вставить, сдвинуть (Tab/Shift+Tab) или нажав Ctrl+H произвести замену в выделенном блоке используя те же регулярные выражения, то в vim я не понимаю, как можно так же легко это сделать. Каждый раз надо переключаться между режимами, запоминать номера строк, между которыми надо произвести замену (:12,27s//g), а если мне надо произвести замену не в целой строке, в середине заменить часть точек на запятые.

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

                                                                                                                                                      0

                                                                                                                                                      Вместо номеров строк нужно просто использовать выделение (которое визуальный (visual) режим). Выделяете, пишете :s, в командной строке напишется :'<,'>s. В визуальном режиме доступны все команды для перемещения курсора, в т.ч. вверх/вниз и /regexp. Вызывается визуальный режим клавишей v посимвольно, с модификаторами Shift (построчно) или Ctrl (блочное выделение) (во всех случаях :s сработает одинаково, диапазон строк является диапазоном строк).


                                                                                                                                                      Вот в середине что‐то заменить не так просто, можно только пользоваться \%V в регулярном выражении.


                                                                                                                                                      (Кстати, здесь есть ещё одно непонятное legacy: режим выделения (select mode). Имитирует выделение из более популярных редакторов — не принимает команды, выделенный текст при печати чего‐нибудь без Ctrl будет заменён. Не знаю ни одного человека, который бы его использовал, кроме того, почти все дополнения используют vnoremap или даже noremap, что определит сочетания клавиш для режимов выделения и визуального одновременно, разрушая утверждения «не принимает команды, выделенный текст при печати чего‐нибудь без Ctrl будет заменён».)

                                                                                                                                                        +1
                                                                                                                                                        Нашел ответ на свой вопрос в статье: Почему, ну почему, эти #?@! придурки используют vi?
                                                                                                                                                        +1
                                                                                                                                                        diw — удалить слово
                                                                                                                                                        ciw — удалить слово

                                                                                                                                                        И там, и там «удалить»? Лучше так:
                                                                                                                                                        diw — (delete inner word) удалить слово под курсором
                                                                                                                                                        ciw — (change inner word) заменить слово под курсором (удалить и перейти в режим редактирования)
                                                                                                                                                          0
                                                                                                                                                          Спасибо, исправлю!
                                                                                                                                                          –1

                                                                                                                                                          Пытаюсь понять зачем нужен vim когда есть такие редакторы как sublime и phpstorm...


                                                                                                                                                          Я понимаю если нужно что-то поправить на сервере где нет редакторов, это да. Но на домашнем легче же написать sudo subl file.txt и все.
                                                                                                                                                          Кто-то писал что в vim легко убирать текст из кавычек. Серьезно? Хорошо, раз в год когда палка стреляет бывает нужно поправить, но логику все равно не понять.