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


Зачем нужна ещё одна, 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 — ввод U с умляутом.
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) убийственный хаброкоммент

Тем не менее, мы попытаемся!


Следует запомнить, что Vim имеет два режима: командный и модальный. В первом вводятся команды, например просто введя двоеточие : можно стрелками вверх-вниз перебирать историю ранее введённых команд. Введя начало команды, по Ctrl+d можно увидеть список похожих команд, а по Tab дополнить сокращение до полного названия команды. Все команды, начинающиеся с : должны завершаться нажатием ENTER, остальные исполняются моментально. Во втором режиме правится текст. Вход в модальный режим по a, i. После правки фрагмента текста, всегда нажимайте Esc, чтобы вернуться в командный режим, и у вас никогда не возникнет вопроса, в каком режиме сейчас редактор.

Поясняющая цитата о вводе команд: Команды в vim задуманы комбинируемыми: 'd' значит «удалить», 'e' значит «переместить курсор в конец слова», поэтому 'de' завершенная команда, означающая «удалить все от текущего положения курсора до следующего конца слова» Команды регистрозависимы!

Например войдя в модальный режим (редактирование текста) по i, введя «True», и выйдя в командный по Esc, вы можете перемещаться по файлу со всей мощью команд навигации и нажимать '.' везде, где нужно повторить команду, то есть вставить слово «True» в текущую позицию курсора в данном случае. Учитывается весь введённый фрагмент с перемещениями курсора и стиранием символов. Так можно по точке автоматизировать ввод форм в одинаковые блоки.

Команды Vim:


Возможно, это только для меня стало внезапным открытием, но вся справка на русском языке по клавишам vim доступна внутри терминала в виде уроков по команде (в том числе по ней я делал этот конспект):

vimtutor ru



Перемещение:

hjkl — дублирование курсорных клавиш влево, вниз, вверх, вправо.
^ или 0 (нуль) — В начало строки
$ — В конец строки
e — В конец текущего, затем следующего, слова.w — К началу следующего слова.% — Перемещение в строке между скобками: (){}[]

Ввод числа перед оператором перемещения приведёт к его повторению заданное количество раз.
2w — Перемещение курсора вперёд к началу второго слова.
3e — Перемещение курсора вперёд к концу третьего слова.

Комбинирование команд упрощает навигацию:j$ —Вниз, в конец следующей строки.

Shift+g — Перейти в конец файла. Если перед этим ввести номер строки, то переход к ней.
507 Shift+g — Например вот так будет переход не в конец, а к строке номер 507
:45Enter — Переход к строке номер 45
mk — Пометить текущую позицию как k
‘k — Перейти к метке k

H, M, L — перемещение курсора на верхнюю, среднюю и нижнюю линию экрана.
zt, zz, zb — перемещение курсора вместе с текстом на верхнюю, среднюю и нижнюю линию экрана.
* — Переместить курсор на следующее слово, такое же, как под курсором
# — Переместить курсор на ПРЕДЫДУЩЕЕ слово, такое же, как под курсором

Вход в модальный режим редактирования текста:

i
— Insert, переход в режим вставки текста левее курсора
a — Append, переход в режим вставки текста правее курсора
A — App_end, переход в режим вставки текста в конец строки
R — Replace, переход в режим замены текста.
o — создать пустую строку под текущей и перейти к её редактированию.
O — создать пустую строку НАД текущей и перейти к её редактированию.

Редактирование:

u — UNDO, отмена последнего действия
U — UNDO, отмена изменений только в последней строке
Ctrl+r — Redo, повторить отменённое действие текущего модального сеанса редактирования.

Многие команды, изменяющие текст, состоят из оператора и объекта. Например ниже оператор удаления d комбинируется с объектом направления удаления:

dw — удалить от курсора до конца слова, включая последующий пробел.
de — удалить от курсора до конца слова, НЕ включая последующий пробел.
d$ — удалить от курсора до конца строки.
d^ — удалить от курсора до начала строки.
ce — удаляет слово и переводит в режим вставки.
c$ — удалить от курсора до конца строки и перейти в режим вставки (редактирования текста).

Ввод числа перед оператором приведёт к его повторению заданное количество раз.

d2w — Удаление двух слов подряд
x — Del, стереть символ под курсором.
dd — Удаление строки
D — Очистка строки от символов
r — замена символа под курсором следующим за r
После нажатия r+символ возвращается в командный режим, что делает неудобным использование для правки русского текста без адаптации командного режима vim к русской раскладке клавиатуры.

diw — (delete inner word) удалить слово под курсором (правка от flastir)
ciw — (change inner word) заменить слово под курсором (удалить и перейти в режим редактирования)
c% — Вырезание выражения в скобках. (% этоShift+5)
ce WORD Esc — вводить на первом символе какого-либо слова, чтобы заменить его на WORD. После по точке так можно будет сделать с любым.

d$ или D (Shift+d) — удаляет строку после курсора
db — удалить слово ДО курсора
di( — удаляет то что в скобочках.
di" — то, что в кавычках
dw — Удаление участка текста от курсора до конца слова.
d5d — удалить 5 строк от курсора вниз
S — Удалить все до конца строки

Ctrl+a — Увеличить число под курсором на единицу
Ctrl+x — Уменьшить число под курсором на единицу
Vu — Перевести строку в нижний регистр
VU — Перевести строку в верхний регистр
g~~ — Инвертировать регистр

Поиск:

При достижении конца файла поиск будет продолжен с начала.

/ — Поиск текста по образцу вперёд
? — Поиск текста по образцу назад
n — Следующее найденное совпадение
NПредыдущее найденное совпадение
Ctrl+o — вернуться туда, откуда начали поиск
Ctrl+i — вернуться обратно к найденному после ctrl+o
% — Поиск парных скобок: (), [] или {}

Поиск и замена:

:s/было/стало — Поиск и замена только первого найденного совпадения в текущей строке
:s/было/стало/g — Поиск и замена всех найденных в текущей строке совпадений
:30,90s/было/стало/gc — поиск и замена с 30 по 90 строку по всей их длине, с подтверждением
:%s/было/стало/gc — поиск и замена во всём файле с подтверждением.

То есть :s/ — текущая строка, :30,90s/ — диапазон, :%s/ — весь файл.
g — во всей строке, c — с подтверждением, иначе только первое совпадение в строке, и без подтверждений.

Можно не писать каждый раз команду заново, достаточно ввести : двоеточие и стрелками курсора вверх-вниз перебирать ранее введённые варианты.

Выделение:

v — визуальный выбор, выделение фрагмента текста для операции над ним.
d — удаление выделенного фрагмента
y — копирование выделенного фрагмента
yw — копирование одного слова от позиции курсора до конца слова вместе с пробелом.
p — вставка скопированного фрагмента
vgU — выделить в визуальном режиме фрагмент и перевести его в верхний регистр.
vg~ — Выделить в визуальном режиме фрагмент и ИНВЕРТИРОВАТЬ его регистр.

Файловые операции:

: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

Настройки:

:set ic — IgnoreCase, игнорирование регистра при поиске или замене
:set noic — вернуть регистрозависимый поиск или замену
:set hls — Hlsearch, подсвечивать найденное
:set nohls — НЕ подсвечивать найденное
:set is — Incsearch, инкрементный поиск — отображение частичных совпадений при поиске
:set nois — Отключить инкрементальный поиск, искать по enter.

Разное:

Ctrl+g — Показывает строку статуса с именем открытого файла, номером текущей строки.
Esc или Ctrl+C или Ctrl+[ — выход в командный режим.:e Enter — Выход. Именно с ДВОЕТОЧИЕМ! Я сам долго не мог выйти. Решил, что ':' это часть предложения, а не часть комбинации, которую нужно набрать и долго жал 'q'.
:e! Enter — Выход без сохранения
:x и :wq — выход с сохранением, причём первая сохраняет только в том случае, если были изменения. (поправка от bolk)
:w! или :wq! принудительное сохранение в readonly файле, 2й вариант с выходом. (поправка от nikitasius)
ZQ ­— Моментальный выход без сохранения и подтверждения.

Настройки по умолчанию можно записать в конфигурационный файл ~/.vimrc
Например без этого я не начну писать в vim ни одной программы на Python:
set tabstop=4 # Длина табуляции
set expandtab # Замена табуляции пробелами

Окна:

Ctrl+W Ctrl+W — Переход между окнами, например при вызове справки по :help между ней и текстом.
:tab ball — Поместить все открытые файлы во вкладки
:tabnew — Создать новую вкладку
gt — Перейти на следующую вкладку

Полезные хитрости:

:%s#>[^<]\+>##g — Очистить текст от HTML-тегов
:%s/^\(.*\)\n\1$/\1/ — Удалить строки, повторяющиеся дважды

Приложение:


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

Lesson 1Lesson 2Lesson 3
Lesson 4Lesson 5Lesson 6
Lesson 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-[ запустит. (й)

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

  1. Статьи на Хабре
  2. Почему, ну почему, эти #?@! придурки используют vi? (отличная статья! А комменты просто жгут)
  3. Vim и кириллица: парочка приёмов
  4. Аж целую книгу запилили по этому vim, я удивляюсь. Нашёл на файлопомойке тут
  5. Прямая ссылка на книгу: O'Reilly — Learning the vi and Vim Editors 7th Edition (перевод).pdf
  6. Vimtouch под Android. Если готовый в googleplay
  7. 100 команд vim, которые должен знать каждый
Поделиться с друзьями
-->

Комментарии (191)


  1. NeoCode
    25.06.2017 15:50
    -3

    mcedit для консоли нормальный редактор. nano тоже ничего (на случай если нет mcedit), а зачем vim и подобные я понять не могу. Зато понятно как они появились: скорее всего это были некие первые эксперименты с текстовыми редакторами, когда никаких устоявшихся норм и концепций пользовательского интерфейса в принципе не было; писали их программисты под свои какие-то очень узкоспецифические нужды и задачи. Надо автоматизировать какое-то действие — опа, есть свободная клавиша — быстро вносим в код самого редактора новый функционал, компилируем — работает! Мне это знакомо потому что я имел дело с софтом, написанным «самобытно» для специальных нужд, иногда еще советскими программистами. Все именно так: серьезная навороченная софтина, но совершенно нестандартный интерфейс. Почему? А потому что в этой конкретной узкоспециализированной сфере вот так сложилось исторически, и переделывать никто не будет — и заказчики привыкли, и программисты.


    1. Desprit
      25.06.2017 18:54
      +6

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


      1. NeoCode
        25.06.2017 19:29
        +4

        nano тоже работает без мыши. Я помню даже досовская среда разработки Turbo C/Pascal позволяла вполне комфортно работать без мыши. Просто вместо вменяемого TUI (Text User Interface) в vim применяется какая-то шаманская клавиатурная магия, возникшая стихийно на заре программирования, когда самого понятия «UI» еще толком не было.


        1. Desprit
          25.06.2017 20:17
          +3

          Так никто и не спорит, что nano без мыши работает. Но есть целый ворох того, что нужно помимо самого редактора для полноценной работы. Линтеры, подсветка синтаксиса, быстрая навигация по тексту, дерево папок проекта и прочее. Мне нравится, что вместе с вимом я имею весь комплект. Да, он появился не сразу, а сформировался постепенно за годы работы, но в этом и прелесть своего конфига — его можно загрузить куда угодно и удаленная машина за минуту имеет ту же среду, что и локальная.
          Практически вся «шаманская клавиатурная магия» укладывается в паттерн «сколько раз сделать — что сделать — с чем сделать». Честно, не представляю как UI может решить проблему огромного числа комбинаций, которые требуются по мере написания кода. И тем более, как он может быть полезен при необходимости работать удаленно.


          1. poxvuibr
            26.06.2017 12:39
            +1

            Линтеры, подсветка синтаксиса, быстрая навигация по тексту, дерево папок проекта и прочее.

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


            1. Desprit
              29.06.2017 14:45

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

              Где этого нынче нет?

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

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

              Лучше чем?


              1. poxvuibr
                29.06.2017 15:32

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

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


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


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


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

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


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

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


                1. Desprit
                  29.06.2017 16:01

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


                  1. poxvuibr
                    30.06.2017 15:02

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

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


          1. gresolio
            26.06.2017 21:39

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

            Хорошее видео про vim от Кирилла из Hexlet


            1. Alexey2005
              27.06.2017 14:51
              +1

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


              1. poxvuibr
                27.06.2017 15:01

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

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


                1. Alexey2005
                  27.06.2017 15:19

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


                  1. poxvuibr
                    27.06.2017 15:50

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


                    1. yuukoku
                      27.06.2017 16:13

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


                      1. poxvuibr
                        27.06.2017 16:26

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


                        set keymap=russian-jcukenwin

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


                        1. ZyXI
                          27.06.2017 21:32

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


                          1. poxvuibr
                            29.06.2017 08:58

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


                            1. ZyXI
                              29.06.2017 18:45

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


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


                        1. yuukoku
                          27.06.2017 23:41

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

                          2) Мне кажется неудобным запоминать ещё одну раскладку и ещё один переключатель внутри vim. Зачем столько лишних сущностей? Я пользуюсь системной переключалкой, у меня это CapsLock, и другими не хотел бы. И что это изменит? Две кнопки вместо одной жать для переключения? Вы не написали, что это избавит от необходимости смены языка на английский перед вводом команд.


                          1. ZyXI
                            27.06.2017 23:49

                            1. Переключение в режиме редактирования, не в нормальном режиме.
                            2. langmap это что?то вроде «по нажатию <C-^> создать привязки «a на ф, b на и, …». Т.к. привязки внутри Vim, то, разумеется, он может их не использовать для ввода команд. В этом главное отличие от случая с системной раскладкой: ни про какие внешние раскладки Vim не знает, получать коды клавиш «как есть» не умеет и, соответственно, не может переключить на раскладку us при переходе в нормальный режим.


                            1. yuukoku
                              27.06.2017 23:54

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


                              1. ZyXI
                                28.06.2017 00:30

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


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


                                1. ZyXI
                                  28.06.2017 00:44

                                  Хотя нет, так просто оно не пройдёт. Представьте себе вариант «пользователь напечатал <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.


                                  1. yuukoku
                                    28.06.2017 03:11

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

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


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


                                    1. ZyXI
                                      28.06.2017 12:19

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


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


                                      1. yuukoku
                                        28.06.2017 23:12

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

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


                                        1. ZyXI
                                          28.06.2017 23:48

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


                                          1. yuukoku
                                            29.06.2017 14:45

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

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


                                            1. poxvuibr
                                              29.06.2017 15:34

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


                                            1. ZyXI
                                              29.06.2017 18:51

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


                                            1. ZyXI
                                              29.06.2017 19:08

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


                                            1. kiba
                                              02.07.2017 07:32

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

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

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

                                              nmap Ж :
                                              " yank
                                              nmap Н Y
                                              nmap з p
                                              nmap ф a
                                              nmap щ o
                                              nmap г u
                                              nmap З P


                                              1. yuukoku
                                                04.07.2017 01:32

                                                А видно ли в нижнем правом углу буквы вводимых команд?

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

                                                nmap Ж :
                                                " yank


                                        1. ZyXI
                                          29.06.2017 00:04

                                          Ещё относительно «одинаково реагировать на „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').


        1. kiba
          26.06.2017 04:09
          +3

          не мог пройти мимо такого невежества:

          в vim применяется какая-то шаманская клавиатурная магия

          это лишь кажется на первый взгляд и для людей без знания английского языка (такие ещё встречаются среди IT-специалистов?). для всех остальных большинство клавиатурных сокращений понятны и являются именно сокращениями, в отличии от менее понятных ctrl+c, ctrl+v и т.п.:
          dwdelete word
          gtgo to tab
          cit/cibchange in tag / brackets
          yyank
          vvisual
          ppaste
          И множество других…


          1. NeoCode
            26.06.2017 09:17
            +4

            Знаете, бывает попадаются legacy исходники, и в них вот такие же имена переменных, функций и т.д.: 1,2,3 буквы, которые что-то там, известное одному лишь автору, обозначают. И попробуй догадайся что это. Поубивал бы за такое.


            1. kiba
              02.07.2017 07:25

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


          1. khanid
            26.06.2017 09:35
            +2

            Оно всё, конечно, так. Но порой система создания сокращений, сложившаяся в *nix сообществе меня убивает. Я, конечно, помню про ограничения длины строки и, как следствие, сокращения команд для того, чтобы вместить больше данных, но вот сокращения какого нибудь copy до cp мне никогда не понять на фоне команды mkdir в 5 символов, например. Ну то есть 4 символа для copy едят место почём зря, а 5 символов mkdir — нет? Сокращения уровня 2-ва и 3-ри.


            1. DrLivesey
              26.06.2017 09:39

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


              1. zedroid
                26.06.2017 11:35

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


                1. DrLivesey
                  26.06.2017 11:42

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


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


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


            1. kekekeks
              26.06.2017 11:25
              +1

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


            1. yuukoku
              27.06.2017 16:35

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


          1. yuukoku
            27.06.2017 16:26

            Спасибо, интересно.

            cit/cib — change in tag / brackets


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

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


            1. kiba
              02.07.2017 07:22

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

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

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

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


        1. poxvuibr
          26.06.2017 12:37
          +2

          nano тоже работает без мыши.

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


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

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


      1. gresolio
        26.06.2017 19:27
        +1

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

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

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


    1. ShadowLim
      25.06.2017 20:05
      +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. yuukoku
      25.06.2017 23:27
      +1

      Мнение NeoCode спорное, я его тоже не разделяю, но прочитал с интересом. А зачем столько минусов насовали автору — не понимаю.


      1. poxvuibr
        26.06.2017 12:41
        -3

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


    1. michalemiriti
      25.06.2017 23:32
      +1

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

      опа, есть свободная клавиша — быстро вносим в код самого редактора новый функционал, компилируем — работает!
      , в нем всё продумано и весьма логично (не с точки зрения того, кто привык к устоявшемуся принципу ввода текста конечно).

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


      1. ZyXI
        26.06.2017 00:03

        опа, есть свободная клавиша — быстро вносим в код самого редактора новый функционал, компилируем — работает!
        , в нем всё продумано и весьма логично (не с точки зрения того, кто привык к устоявшемуся принципу ввода текста конечно).

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


    1. Jef239
      26.06.2017 08:51
      +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. eov
        26.06.2017 09:29
        +1

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


        1. Jef239
          26.06.2017 22:19

          GPRS в районе Сочи за пару лет до олимпиады — вечером обмен раз в 20 минут. Все таймслоты забивал голосовой трафик. Это октябрь, что там летом — страшно подумать.


      1. yuukoku
        26.06.2017 15:41

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


      1. grossws
        26.06.2017 21:05

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


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


    1. khanid
      26.06.2017 09:23

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

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


    1. huwesu
      26.06.2017 14:54

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


      1. Без мыши все что угодно.
      2. Гарантия не испортить текст, если вы умеете работать с vim. Важно для редактирования программ/конфигов и для медленной связи. Для администрирования серверов первым делом ставлю vim и mosh.


  1. beeruser
    25.06.2017 16:44
    +7

    >> как не растерять навыки, для каких целей его постоянно использовать, этот vim?
    Очень просто — после освоения vim вы перестанете пользоваться другими редакторами.


    1. Beyondtheclouds
      25.06.2017 17:46
      -1

      true :)


    1. norlin
      25.06.2017 19:08
      +1

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


      1. klirichek
        25.06.2017 20:00
        -2

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


        1. norlin
          25.06.2017 20:31
          -1

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


      1. Steed
        26.06.2017 11:12

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


      1. domix32
        26.06.2017 13:06

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


        1. norlin
          26.06.2017 15:18
          -1

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


      1. beeruser
        26.06.2017 18:27
        +1

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

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


        1. norlin
          26.06.2017 18:30

          Если вам не комфортно, значит вы не освоили vim.

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


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


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


          1. beeruser
            26.06.2017 18:47

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

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


            1. norlin
              26.06.2017 18:49

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


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

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


              Дерзайте

              Да, но зачем?


    1. Rogaven
      25.06.2017 20:55
      +8

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


      1. DrLivesey
        26.06.2017 09:27

        Если вы не можете выйти из 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
        ~
        


        1. ainoneko
          26.06.2017 10:12
          +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!).
          

          )


          1. DrLivesey
            26.06.2017 10:20
            +4

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


          1. grossws
            26.06.2017 21:09

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


        1. IGHOR
          26.06.2017 11:57

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



        1. yuukoku
          26.06.2017 15:46
          +1

          Ваш покорный слуга, написавший статью над комментами тоже сперва принял двоеточия за декоративный элемент оформления необязательного ко вводу. Когда методом гугления я понял, как выходить, то сперва схватился за голову и освоил nano, а затем через какое-то время родилась эта статья, и я перешёл на vim.


      1. igorp1024
        26.06.2017 11:28

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


  1. corr256
    25.06.2017 18:20
    +4

    Пользуйтесь notepad.exe и будет вам счастье.


    1. NeoCode
      25.06.2017 18:53
      +4

      Когда кроме ssh есть еще sftp или scp то да, бывает удобнее пользоваться чем-нибудь типа Notepad++.


      1. izzholtik
        26.06.2017 11:19

        sshfs :)


  1. bolk
    25.06.2017 19:48

    :e! Enter или :x или :wq — Выход без сохранения
    :x и :wq — выход с сохранением, причём первая сохраняет только в том случае, если были изменения.


    1. nikitasius
      25.06.2017 19:53

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


  1. nikitasius
    25.06.2017 19:52
    +6

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


  1. webhamster
    25.06.2017 19:57

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

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

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

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

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

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


    1. klirichek
      25.06.2017 20:04
      +4

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


      1. ZurgInq
        26.06.2017 09:05
        +1

        Надо отказаться от всех редакторов, которые не поддерживает роутер?


      1. izzholtik
        26.06.2017 11:24
        +3

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


    1. STingerOid
      26.06.2017 15:52
      -1

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

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


  1. eov
    25.06.2017 20:09
    +4

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


    1. kazarey
      25.06.2017 20:40
      +2

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


      1. eov
        25.06.2017 21:39
        +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#


      1. grossws
        26.06.2017 01:47

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


      1. klirichek
        01.07.2017 17:35

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


        1. grossws
          01.07.2017 17:54

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


    1. yuukoku
      25.06.2017 21:25
      +2

      Не во всех он есть из коробки. В Manjaro например не было.


    1. kotomyava
      26.06.2017 10:26
      +1

      То, что он есть везде, не делает его удобным. =)
      Знать его, при соответствующей специфике работы, безусловно надо, хотя бы на базовом уровне. А вот любить imho не за что — времена терминалов на 2400бод, когда он был спасением, давно прошли, и концепция с ними устарела.


    1. antstar
      26.06.2017 10:31
      -1

      Дружище, за 20 лет работы можно уже изучить что-то новое. Я конечно понимаю, сила привычки, лень, да и просто неохота развиваться дальше… Поверь, для работы с проектами за 20 лет сделано много хороших IDE, и подсветка синтаксиса у того же nano присутствует, и поиск работает нормально. Vi был хорош именно 20 лет назад, сейчас это просто динозавр обросший избыточной функциональностью.


      1. poxvuibr
        26.06.2017 12:46
        +1

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

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


        1. antstar
          26.06.2017 13:47

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


          1. poxvuibr
            26.06.2017 13:54
            +2

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


            1. antstar
              26.06.2017 14:05
              -1

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


              1. poxvuibr
                26.06.2017 14:23
                +4

                Когда появился vim, не было выбора.

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


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

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


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

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


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

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


                1. antstar
                  26.06.2017 15:29

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

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


                  А зачем доводить Вим до состояния IDE? Не проще грамотно использовать само IDE?


                  1. poxvuibr
                    26.06.2017 16:02
                    +1

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

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


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

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


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

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


              1. warlock13
                27.06.2017 11:10
                +1

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

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


            1. klirichek
              01.07.2017 17:41

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


      1. michalemiriti
        26.06.2017 13:24
        +1

        Однако во всех хороших IDE есть vim-mode либо из коробки (например Idea предлагает использовать vim mode по умолчанию при первом запуске), либо в числе популярных плагинов. Наверно это для тех, кто никак не может переучиться на «современную» концепцию редактирования текста :)


        1. antstar
          26.06.2017 13:52
          -1

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

          для тех, кто никак не может переучиться на «современную» концепцию редактирования текста

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


          1. poxvuibr
            26.06.2017 14:13
            +2

            Да, это сделано для того, чтобы хоть как-то привлечь людей, ничего кроме vim не принимающих.

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


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

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


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

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


            1. antstar
              26.06.2017 15:27
              -2

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


              1. ZyXI
                26.06.2017 15:44
                +2

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


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


                1. antstar
                  26.06.2017 16:05
                  -3

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

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

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

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


                  1. poxvuibr
                    26.06.2017 16:24

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

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


                  1. DrLivesey
                    26.06.2017 16:32
                    +1

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


                  1. grossws
                    26.06.2017 21:18

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

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


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


              1. poxvuibr
                26.06.2017 15:58
                +2

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

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


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

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


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


                1. antstar
                  26.06.2017 16:11
                  -2

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


                  1. poxvuibr
                    26.06.2017 16:21
                    +1

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


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


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


                    1. antstar
                      26.06.2017 16:45
                      -2

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

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

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


                      1. poxvuibr
                        26.06.2017 16:53
                        +4

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


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

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


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

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


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


                        1. antstar
                          26.06.2017 17:00
                          -1

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

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

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


                          1. poxvuibr
                            26.06.2017 17:22
                            +2

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


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


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

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


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

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


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

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


                            1. Desprit
                              29.06.2017 20:38

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


          1. michalemiriti
            26.06.2017 17:36
            +4

            Все можно сделать и более простым (читай: НЕ vim-овским) путем.


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


      1. eov
        26.06.2017 14:13

        Дружище, за 20 лет работы можно уже изучить что-то новое.

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


        1. antstar
          26.06.2017 15:18
          -1

          Всегда пожалуйста, приходите ещё!

          что умею только в vi

          ну именно так оно и прозвучало.


  1. raidhon
    25.06.2017 20:31
    -1

    Из 15 лет программирования 8 я программирую в linux.
    И до сих пор при упоминании Vim у меня глаз дергаться начинает.


    Просто не понимаю как в нем можно работать это адова жесть просто!!! ( лучше даже так !!!!!!!!!!!!).


    Для консольных вещей использую nano, его с головой хватает.
    А когда нужны писать что то серьезное использую IDEA с deployment.


    Иногда хочется расширить свое сознание и познать Vim.
    Но перфекционист в голове кричит что лучше выучи новый язык программирования.
    Чем учить бесполезные и жутко неудобные вещи.


    Вот теперь учу Nim он лучше расширяет сознание, да и более полезен в плане разработки!


    1. eov
      25.06.2017 23:50

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


      1. raidhon
        26.06.2017 15:48
        -5

        Спасибо Кеп, прямо глаза мне открыли!!!
        Нужно внимательней читать комментарий.
        IDEA — это IDE от JetBrains ( Integrated Development Environment та самая <<Интегрированная среда разработки>>) с возможностью deployment по протоколам FTP, SFTP, FTPS.


        По поводу Vim.
        Его используют далеко не только администраторы.


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


        Низко эффективные потому что хоть как ты обвешай плагинами Vim в IDE он не превратится.
        Это как завод на устаревшем оборудовании, пока его не поменять, больше и качественнее товара выпускать не будешь.
        Да и в обычный редактор не превратиться.
        Например Atom если обвешать плагинами становиться очень близко к IDE. Мне только плагина для удаленного работы с базой данных не хватает.


        Говорите в основном администраторы — http://vimawesome.com/
        Пятнадцать тысяч плагинов.
        У Atom в три раза меньше.


        Исключение составляют ребята которые используют IDE в Vim режиме.
        Тут практически нет разницы, и только один диагноз Vim мозга.
        Хотя нестандартное мышление это даже полезно.


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


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


        1. DrLivesey
          26.06.2017 16:40
          +2

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

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


          Тут практически нет разницы, и только один диагноз Vim мозга.


          1. raidhon
            26.06.2017 17:09
            -1

            Не вижу ничего негативного во фразе объясняющий образ мышления.
            Актуальная IDE + с режимом Vim практически нивелирует отставание в плане эффективности разработки.
            Чем просто консольного Vim.
            Но желание тащить за собой устаревшие концепции разработки в современную IDE, вызывает у меня (да и не только у меня) как минимум удивление.
            Это то же самое если бы кузнец в дополнению к гидравлическому молоту колошматил обычной кувалдой.
            Зачем, для чего это ему непонятно.


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


            1. DrLivesey
              26.06.2017 17:17
              +2

              Но желание тащить за собой устаревшие концепции разработки в современную IDE

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


              1. raidhon
                27.06.2017 22:43
                -1

                По поводу плагина Vim к IDE (Например к любому продукту JetBrains).
                Как уже три раза писал сама IDE практически нивелирует потери в эффективности.
                Как обычно все читают между строк и видят то что хотят видеть.


                В остальном простите, но вы говорите глупости.


                Что вам говорит этот термин Integrated Development Environment — Интегрированная среда разработки.
                Это инструмент который является непосредственной частью концепции разработки.
                Среда в которой созданы все условия для эффективного течения процесса программирования.


                По вашему инструмент от которого зависит успех в процессе создания программного продукта, не имеет ни какого значения?
                Это то же самое если заявить что токарю не нужен токарный станок, он же не имеет никакого значения!


                Я рассматриваю все процессы с точки зрения их эффективности.
                А инструменты это фундамент процесса разработки.
                Они влияют на скорость и качество.
                Это ничуть не меньшая часть чем знание самого языка, паттернов проектирования и ООП и тд.
                Чем быстрее, чем качественнее тем дороже.


                Плагин к Vim к IDE это всего лишь интерфейс к инструменту, аналог ручки к топору или топорище.


                Можно ли рубить дрова топором без ручки, можно но очень хреново.
                А это консольный Vim.


                Можно ли рубить дрова со старой кривой ручкой с сучками, можно, но как показывает практика хуже чем с новой прорезиненной ручкой.
                А это наш плагин Vim.


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


                1. DrLivesey
                  28.06.2017 10:06

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


                  Далее:


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

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


                1. Zapped
                  28.06.2017 11:39
                  +1

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

                  а поведайте примеры, пожалуйста :) для эрудиции


                  1. raidhon
                    28.06.2017 14:48
                    -2

                    Сарказм, сарказм.


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


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


                    А настройка своего любимого Vim это по моему вообще фетиш.
                    И если вы сидите на Vim, я на 100% процентов уверен.
                    Что вы можете провести за этим делом весь день!


                    За всю жизнь один раз встречал Vim адепта у которого все работало без вопросов.
                    Причем недавно, но он работал на Neovim https://neovim.io.
                    Форк практически превращающий Vim в IDE.


                    Тут люди обсуждают влияние табов на зарплаты.
                    Vim видимо тоже меняет мозговые процессы. ))


                    1. DrLivesey
                      28.06.2017 14:57

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


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

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


                    1. Zapped
                      28.06.2017 15:03
                      +3

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

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

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

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

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


                    1. ZyXI
                      28.06.2017 15:04
                      +2

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


                    1. poxvuibr
                      28.06.2017 15:08
                      +3

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

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


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

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


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

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


                      1. raidhon
                        28.06.2017 16:06

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


                        У меня вообще нет никаких проблем.
                        Я простой фрилансер работающий на себя, которого лишь привлекли написать к проекту микросервис на Go.
                        Который должен общаться через API, которое сеньёр писал два месяца.


                        К этому времени я сделал для себя аналогичное тестовое API, написал микросервис протестировал, задокументировал и благополучно его сдал.


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


                        Разработчик с которым я сотрудничал по заявлению компании Гуру Python.


                        Это не первая моя подобная встреча с программистами Vim и думаю не последняя.
                        Так как основные проекты у меня бекенд.


                        Этот же ответ для DrLivesey, ZyXI.
                        Так как карма не позволяет писать часто.


            1. poxvuibr
              26.06.2017 17:30
              +3

              Не вижу ничего негативного во фразе объясняющий образ мышления.

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


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

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


          1. grossws
            26.06.2017 21:23
            +2

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


            1. yuukoku
              28.06.2017 03:29
              +2

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


              1. DrLivesey
                28.06.2017 10:13

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


                • Vim
                • Unix way

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


    1. symbix
      26.06.2017 16:03
      +1

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


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


  1. netch80
    25.06.2017 21:23

    Если нужен не-vi-like редактор, всегда сношу nano и ставлю joe. В отличие от nano, у него управление в разы понятнее, и достаточно удобно.
    Но в реальности привык использовать vim для всего, где не нужно IDE с полным набором уже специфичных плюшек вроде рефакторинга.


  1. barsuksergey
    25.06.2017 22:41
    +1

    В PhpStorm есть плагин IdeaVim. Я им пользуюсь с удовольствием. Вкладки по привычке переключаю не Ctrl+Tab, а gt. Фолдинг — zM, zo. Ctrl+w,v — окна. Выделение блоков, с инкрементальным поиском, с регулярками — всё есть.
    До того, как появился плагин, я правда чувствовал себя несчастным, ведь надо было учить встроенные команды редактора IDE. Кто пользовался Emacs или Vim хотя бы пару лет, тот поймёт.
    Сравнивать Vim с IDE, если надо не найти и подправить код на продакшне, а разрабатывать — наверное, не стоит.
    Знать хотя б азы — однозначно полезно. А то, говорят, от мышки туннельный синдром.


    1. Steed
      26.06.2017 11:16

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


  1. tartarelin
    25.06.2017 22:44

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


    1. eov
      25.06.2017 23:42

      А зачем они? Я основные команды помню, потому, что они интуитивно запоминаются:
      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 (вверх, влево, вниз, вправо) почти как в играх)


      1. eov
        26.06.2017 00:08

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


    1. nlykl
      25.06.2017 23:44

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


      1. barsuksergey
        25.06.2017 23:59

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


      1. eov
        26.06.2017 00:01

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


  1. ZyXI
    26.06.2017 00:23
    +1

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


    1. eov
      26.06.2017 00:35

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


      1. ZyXI
        26.06.2017 02:20
        +1

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


    1. eov
      26.06.2017 00:53

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


  1. JerleShannara
    26.06.2017 03:03

    Доктор, я тащусь от edlin.exe, скажите, это лечится?


    1. Alyoshka1976
      26.06.2017 18:12

      !!!
      Тем, кто не помнит хотя бы радость перехода от 5-дюймовых дискет на 3-дюймовые, трудно будет понять юмор во фразе: «Windows: От людей подаривших вам EDLIN!»


      1. yuukoku
        26.06.2017 18:16

        5.25" у меня сохранилось стопка длиной см 50, и почти все (ZX-Spectrum диски 320Kb, IBM диски 1.2Mb) рабочие. А 3.5" ранние эпохи бума ещё ничего, а в последние 90е годы такое гвно стали выпускать, что все размагнитились, поэтому радости перехода предпочел сразу флешки.


        1. Alyoshka1976
          27.06.2017 08:38
          +1

          Да, TR-DOS forever) Из-за бага/фичи команды чтения сектора я смог тогда сотворить программу для Спекки ( у меня был «Байт» — брестский клон 48-го), читавшую файлы PC-шных 720-кбайтовых дискет. А моя первая 64-Мбайтная флешка до сих пор в строю!


          1. yuukoku
            27.06.2017 13:32
            +1

            Ну не такой уж forever этот TRDOS) Для игр — да, а для работы (код, тексты) предпочитал iS-DOS. Там такой мощный хоткейный редактор, что после него никакие nano-vim не страшны. Просто deja vu, что вернулся туда) И подобие командного режима как дополнительного аппендикса в isdos editor было. Вот если бы как в vim реализовали, а не через тернии, то гораздо удобнее было бы — сейчас уже понимаю.

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


            1. Alyoshka1976
              27.06.2017 13:47
              +1

              Мой «Байт» погиб в неравной борьбе с перепутанной в спешке полярностью питания. Дискету с IS-DOS я заполучил незадолго до этого, поэтому поработать с ней толком не успел :-(


  1. KoToSveen
    26.06.2017 03:42

    Кто-нибудь юзает хабрахоткеи?
    p.s. Хабр любит vim


  1. DeLuxis
    26.06.2017 07:35
    -2

    Чет в комментариях народ слишком злой на vim.)
    Там пакетные менеджеры давно уже прикрутили, качает плагины по конфигу с гитхаба. Всякие валидаторы и прочие дополнялки кода из этих ваших nodejs и прочих Brackets давно уже работаю.
    Вы ради любопытства просто полазьте по гитхабу, то что там есть ни одной IDE не снилось.

    На любой машине ваш конфиг разворачивается за пару минут. Главное чтоб был vim и пакетный плагин к нему.

    Это я так, вдруг кто-то заинтересуется) Вовсе не хочу сказать что Vim хорош… Нет, он ужасен! Не надо вам туда лезть, там своя атмосфера. )


    1. grossws
      26.06.2017 21:27

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

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


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


  1. ncix
    26.06.2017 10:55
    +1

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

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


    1. yuukoku
      26.06.2017 16:57
      +1

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


      1. ncix
        26.06.2017 17:01

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


        1. yuukoku
          26.06.2017 17:49

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


  1. AlexeevEugene
    26.06.2017 11:38
    +1

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

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

    Всё. Вся боль людей.


    1. prostofilya
      26.06.2017 12:22
      +2

      4) «q!»


      1. AlexeevEugene
        26.06.2017 15:29

        да, нюанс:

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


  1. pfzim
    26.06.2017 11:47

    Опять перечислили команды, а как ими пользоваться не объяснили.

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

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


    1. ZyXI
      26.06.2017 12:08

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


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


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


    1. pfzim
      26.06.2017 13:01
      +1

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


  1. flastir
    26.06.2017 17:02
    +1

    diw — удалить слово
    ciw — удалить слово

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


    1. yuukoku
      26.06.2017 17:02

      Спасибо, исправлю!


  1. springimport
    26.06.2017 23:04
    -1

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


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


    1. michalemiriti
      27.06.2017 00:52

      Как-то так получается, что по прошествии стадии мук обучения работа в vim становится как это говорят second nature и «vim file.txt» оказывается гораздо проще, быстрее и эффективнее чем «subl file.txt» (если конечно в нем нет vim mode, но даже так мне кажется что vim в текстовом режиме запустится быстрее) :) Удаление текста между кавычек (а также скобок, внутри html тэгов, между метками...) это далеко не единственная задача, которую эффективнее делать с помощью vim, чем с помощью «традиционного» редактора текста. Конечно при условии владения техникой.

      Вот собственно и вся логика. Не понимаю что здесь непонятного :) Еще до того как я освоил vim мне была понятна мотивация тех, кто им пользуется. Также как мне вполне понятно зачем люди пользуются emacs, unix-like ОС, терминалом или предпочитают МКПП в автомобиле. Подобные инструменты действительно позволяют работать эффективнее, а иногда просто приносят больше удовольствия при их использовании, что тоже немаловажно :)


  1. vvpoloskin
    26.06.2017 23:43
    +1

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

    Представьте, вам нужноразово нагенерить 1000 однотипных конфигурационных файлов с различающимися 5 строками. Vim (а он в том числе научит пользоваться sed/awk) вы настроите под эту задачу.

    Мнение о том, что за 20 лет придумали множество более удобных инструментов, разбивается о факт, что и vim 20 лет не стоял на месте. Это как сравнивать ms word и latex для тех, кто профессионально работает с версткой книг. Или excel и scilab для матстатистики. Вы профессионально много работаете с текстом? Тогда вам надо разобраться с vim, это не так больно) Нет — для вас есть более узскоспециализированные инструменты. Нужно всего лишь им пользоваться, а при возникновении проблем гуглить решение и вникать в латинские буковки.

    Чтобы пользоваться vim нужно желание совершенствовать свой повседневный инструмент. Крайне желателен навык слепой печати. И вообще необходимо желание использовать аскетичную линуховую консоль и понимание Ее преимуществ, принятие этой философии) Ведь там, где этот редактор, обычно ставится screen/tmux, активно используются sed/ask и разные башизмы.

    P.S. Кстати, может кто подскажет, есть в ms word настройка редактирования в режиме vim?


  1. Zapped
    27.06.2017 18:58

    Ctrl+a — Увеличить число под курсором на единицу
    Ctrl+x — Уменьшить число под курсором на единицу

    не только под курсором, но и после него или в каждой строке выделенного текста, что гораздо-гораздо лучше ;)


    1. yuukoku
      27.06.2017 23:46

      Спасибо, исправлю. Только вернее «ближайшего справа числа». Проверил на коде:
      if uboat.engines['electro4']['rpm'] != 0 or uboat.engines['electro6']['rpm'] != 8:


  1. Zapped
    27.06.2017 19:06
    +1

    я бы ещё добавил в статью

    :g/string/d Удалить все строки, содержащие “string”
    :v/string/d Удалить все строки, не содержащие “string”

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


  1. Bimawa
    28.06.2017 15:05

    Все говно! Spacemacs наше все!!!