LINUX.ORG.RU
ФорумTalks

Зачем нужен vi в любом году, который не 1980?

 , , ,


2

1

Появилось огромное количество наиудобнейших редакторов, без всех этих :wq и прочего говна. Годный TUI был даже в DOS (Turbo Pascal, например), даже с поддержкой мыши. В чём прикол быть садомазохистом (в самом ужасном значении этого слова) добровольно в date +%Y, когда есть nano, ee и прочие удобные редакторы? Есть, конечно, некрофилы, которые педалят очень древнее железо… но сколько их? 1% от 1% от 1%?

Зойчем вообще тащить стандарты прошлого века в современный мир? Сейчас, конечно, начнутся возгласы про «ты просто смузихлёб, бери свой электрон и не ной», но это же манипуляция и/или подмена понятий.



Последнее исправление: Original_1 (всего исправлений: 1)
Ответ на: комментарий от andreyu

И так… напоминаю… про esc+цифирка, а то вдруг вы не вкурсе.

Напоминаю, в mc для этого есть опция.

Опция для чего?

anc ★★★★★
()
Ответ на: комментарий от EXL

F2 для Save File это вполне нормальная комбинация.

«Нормальная комбинация» - так себе аргумент.

Лучше ответьте мне, в чьём воспалённом мозгу возникли такие ассоциации:

Я даже не знаю, где такие комбинации используются. Меня более чем устраивает vim в качестве текстового редактора и ide для c++.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Дяденька, тащето я вас спросил... не? Мне действительно не понятен ваш комментарий в виде

Напоминаю, в mc для этого есть опция.

anc ★★★★★
()
Ответ на: комментарий от anc

Мой комментарий был на ваш:

И так… напоминаю… про esc+цифирка, а то вдруг вы не вкурсе.

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

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Я даже не знаю, где такие комбинации используются. Меня более чем устраивает vim в качестве текстового редактора и ide для c++.

Такая наркомания и откровенная идиотия используется в обсуждаемом тут текстовом редакторе для нубов – nano.

EXL ★★★★★
()

для быстрого редактирования текстовых файлов в прошивке дешёвого роутера через телнет

Bad_ptr ★★★★★
()
Ответ на: комментарий от X512

Можете описать конкретные сценарии редактирования? Мне например для редактирования кода надо часто переходить к разным местам в коде и я это делаю с помощью мыши и/или списка обьявлений. Чисто через клавиатуру это будет медленнее.

Ну, во-первых, есть мысль что не всегда нужно переходить к какому-то конкретному месту чтобы что-то сделать.

Например, в классических редакторах, чтобы удалить строку и написать что-то вместо неё, нужно сначала перейти к её началу, далее выделить перейдя в конец - мышкой или клавиатурой - и потом удалить или начать писать заменяя. В vim, даже если ты находишься в середине строки, s (заменить) или dd (удалить строку) делает ровно это.

Ещё vim умеет работать с блоками. Как в классическом редакторе заменить всё, что есть между фигурными скобками? В vim это ci{. Аналогично для круглых, квадратных, одинарных/двойных кавычек и т. п.

Слова - как в классическом редакторе поменять слово если ты находишься в его середине? Как правило это Ctrl+Left Shift+Ctrl+Right, либо двойной клик мышкой по слову, и далее писать. В vim это ciw. А как повторить эту операцию для второго такого же слова? В vim это . - повторение команды, в данном случае заменить одно слово на другое.

Дописать в конец строки: А. Дописать в начал строки: I

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

Во-вторых, навигация.

Конечно, если ставить задачу «переместиться в произвольное место X, Y», то мышка будет наилучшем вариантом (кстати, в vim мышка отлично поддерживается, если очень хочется). Но как правило место, в которое ты хочешь снавигироваться, имеет семантический смысл и этим можно воспользоваться.

Например, стою на слове, хочу переместиться на предыдущее упоминание этого слова: #. На следующее: *. В конец этого слова (или, если я итак в конце этого слова - в конец следующего слова): w. Аналогично для начала слова: b.

Можно нажать / или ? (заметь, на одной клавише находятся), начинать писать, и оно перемещается вверх или вниз к первому совпадению. Аналог find, но сделано удобней настолько, что иногда (не всегда) это можно использовать для навигации, и это быстрее, чем прицеливаться мышкой.

Моё любимое - перемещаться по строке по какому-то символу. Например, хочу переместиться к какому-то месту в строке, где буква ‘a’: ta и далее ; пока не попаду туда, куда нужно. Аналогично назад через Ta.

Перемещаться между параграфами: { и }. Когда пишешь код, ты ж разделяешь код пустыми строками?

А ещё команды можно комбинировать. Удалить до конца параграфа: d}. Удалить до следующего символа ‘a’: dta.

А еще можно сразу делать команду несколько раз. Удалить одну строку dd, а удалить 3 строки 3dd. Кстати, как ты в классическом редакторе сделаешь 80 символов, например ‘*’ (например чтобы оформить комментарий) - ты нажмёшь ‘*’ и будешь держать пока не получится 80; скорее всего сразу не получится, нужно будет недостающее дописывать, или лишнее удалять. В vim это 80i*.

Ну и много другого.

Обращаю внимание: это не отменяет мышку, стрелочки, классические Home/End и т. п. Это расширяет инструментарий для навигации, и в итоге получается намного удобней и быстрее.

И это, наверное 1% от того, что возможно. И каждого человека свой набор удобных ему инструментов vim.

Конечно, чтобы этим всем пользоваться, нужно эти команды помнить, чтобы они были, так сказать, «на кончиках пальцев», то есть на автомате. И самая большая сложность состоит в том, чтобы это выучить. Но оно того стоит.

Kroz ★★★★★
()
Ответ на: комментарий от andreyu

Напомните, что делает хоткей ctrl+s в эмуляторе терминала?

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

Однажды какой-нибудь американский хипстерок это сделает и получит славу, но никогда это не будет ЛОРовец.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Kroz

В vim, даже если ты находишься в середине строки, s (заменить) или dd (удалить строку) делает ровно это.

угумс, только сначала надо дотянутся до ЕСКАПЕ, а потом попасть на i.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

ctrl+s отключением этой комбы

Ни в коем случае!

Когда в теминале идёт портянка текста (например, при загрузке), то Ctrl+S приостанавливает вывод и можно нормально прочитать что оно пишет. Особенно полезно когда при загрузке Linux что-то пошло не так.

Мега полезная фича.

Да, это не для мамкиных хацкеров, которые админят в браузерах.

Kroz ★★★★★
()
Ответ на: комментарий от Bad_ptr

угумс, только сначала надо дотянутся до ЕСКАПЕ, а потом попасть на i.

Ну, лично мне удобней Ctrl+[ (а при желании можно ещё упростить).

И всё равно это быстрее.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

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

…Нажать Home, Shift+↓, Enter. Пользователи Vim видимо просто не знают основ обычных текстовых редакторов.

Как в классическом редакторе заменить всё, что есть между фигурными скобками?

Ctrl+B (balance) чтобы выделить содержимое в скобках потом «заменить в выделенном».

Как правило это Ctrl+Left Shift+Ctrl+Right, …, и далее писать. В vim это ciw.

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

Дописать в конец строки: А. Дописать в начал строки: I

Home/End и дописывайте без проблем. Всего одна кнопка и никаких режимов.

Но как правило место, в которое ты хочешь снавигироваться, имеет семантический смысл

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

Например, стою на слове, хочу переместиться на предыдущее упоминание этого слова: #. На следующее: *.

Выделить слово (см. выше), Ctrl+H (поиск выделенного)/Ctrl+Shift+H (поиск в обратном направлении).

Моё любимое - перемещаться по строке по какому-то символу. Например, хочу переместиться к какому-то месту в строке, где буква ‘a’: ta и далее ; пока не попаду туда, куда нужно. Аналогично назад через Ta.

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

Перемещаться между параграфами: { и }. Когда пишешь код, ты ж разделяешь код пустыми строками?

Делается через навигацию по дереву символов. Или просто поиск двух переносов строк.

Кстати, как ты в классическом редакторе сделаешь 80 символов, например ‘*’ (например чтобы оформить комментарий)

Через шаблоны кода/плагины.

X512 ★★★★★
()
Ответ на: комментарий от Bad_ptr

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

Однажды какой-нибудь американский хипстерок это сделает и получит славу, но никогда это не будет ЛОРовец.

В нормальном редакторе micro, который действительно подходит для замены идиотского nano все эти Ctrl+S и даже Ctrl+Q удобно переопределены, и используют такую же схему, как в привычном Kate, Notepad++, Gedit и пр.

EXL ★★★★★
()
Ответ на: комментарий от Kroz

Особенно полезно когда при загрузке Linux что-то пошло не так.

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

Bad_ptr ★★★★★
()
Ответ на: комментарий от Kroz

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

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

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

или становишься в начало строки, зажимаешь шифт и нажимаешь стрелочку вниз

Bad_ptr ★★★★★
()
Ответ на: комментарий от X512

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

…Нажать Home, Shift+↓, Enter. Пользователи Vim видимо просто не знают основ обычных текстовых редакторов.

И ещё стрелочку вверх забыл.

То есть 4 кнопки/комбинации, две из которых, Home и ↓, требуют перемещение руки в другую часть клавиатуры

Сравниваем с просто s в vim, да?

Как в классическом редакторе заменить всё, что есть между фигурными скобками?

Ctrl+B (balance) чтобы выделить содержимое в скобках потом «заменить в выделенном».

Это где такое?

А как то же сделать то же для [], (), "", ''?

Как правило это Ctrl+Left Shift+Ctrl+Right, …, и далее писать. В vim это ciw.

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

Во-первых в vim основным режимом является normal mode - там где команды вводятся.

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

Но как правило место, в которое ты хочешь снавигироваться, имеет семантический смысл

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

И да и нет.

Ты можешь в редакторе удалить от текущей позиции до следующего вхождения слова?

В Vim есть дерево символов?

Что это?

Выделить слово (см. выше), Ctrl+H (поиск выделенного)/Ctrl+Shift+H (поиск в обратном направлении).

Я так смотрю, что ты сравниваешь с каким-то конкретным IDE. Раскрой уже имя, не томи.

Kroz ★★★★★
()
Ответ на: комментарий от Bad_ptr

Это узкий случай для узких людей.

А что широкие люди забыли в терминале системы распространённостью 2%?

Вот кому надо, тот пусть в конфиги пропишет эту комбу

Какой конфиг? Система ещё не загрузилась. А может и не загрузится, если проблема есть.

Kroz ★★★★★
()
Ответ на: комментарий от Bad_ptr

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

Нет.

Kroz ★★★★★
()

Не нужен, nano всем хватит

neocrust ★★★★★
()
Ответ на: комментарий от andreyu

И в чьем воспаленном мозгу f2 ассоциируется с save file?

Это из турбо паскаля же.

bread
()
Ответ на: комментарий от Kroz

Конечно, чтобы этим всем пользоваться, нужно эти команды помнить, чтобы они были, так сказать, «на кончиках пальцев», то есть на автомате. И самая большая сложность состоит в том, чтобы это выучить. Но оно того стоит.

Не очень то и сложно. Надо просто грамматику вкурить, а базовых команд (глаголов) не так и много. Сложно вон C++ выучить. Даже не знаю как это людям удается.

bread
()
Последнее исправление: bread (всего исправлений: 2)
Ответ на: комментарий от anc

Напротив. В 90-е годы было популярно, генерируешь HTML, кладёшь на сайт по FTP, работает только в IE.

В MS Office 97, кстати, входил софт для вёрстки сайтов, не помню как назывался, но кто ж им пользовался-то.

Aceler ★★★★★
()

Там вроде где-то в начале сказали, что вброс уныл и не канает для 2022 года? :) 5я страницы пошла…

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Там вроде где-то в начале сказали, что вброс уныл и не канает для 2022 года? :) 5я страницы пошла…

Так какой вброс, такой и корм. Здесь даже holywar не с кем. Кто тут знает Neovim (Lua), Vim (vimscript, да 9), Emacs (lisp)? Да пару человек, которые уже давно не играют в такие темы.
Дальше по теме: все, повторюсь, ВСЕ тут корм хреновый. Они нам рассказывают о скорости Vim? И при этом сидят на QWERTY? И с умным видом зачёсывают? Фуфуфу!

На вот на прикорм. Очень толковая тема (и вброс ничёт так):https://www.reddit.com/r/neovim/comments/qc0964/emacs_to_neovim_or_vice_versa_or_both_stories/

Если почитать ответ frozeninfate, то довольно весело (особенно поглядев на конфиги).

Oldboy
()
Ответ на: комментарий от Zhbert

Не ну так-то мы его даже преподавали в учебном комбинате. Но он никогда не был популярным.

Aceler ★★★★★
()
Ответ на: комментарий от Kroz

Как правило это Ctrl+Left Shift+Ctrl+Right, …, и далее писать. В vim это ciw.

И контролом это в итоге удобнее и быстрее, чем в виме esc+esc+esc(+ещё_несколько_эскейпов_просто_на_всякий_случай)+ciw.
Я сколько пользовался вимом, так и не запомнил.

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

Exmor_RS ★★★
()
Ответ на: комментарий от bread

Ты просто нулевой. Я понимаю, что знаний нет, понты есть. Если пользуешся vscode, хоть узнай разницу между плагином vim и nvim, а потом блевать будешь.

Oldboy
()
Ответ на: комментарий от X512

Можно так например https://disk.yandex.ru/i/4zXRfyHFE1eQrA но эт не из коробки, это волшебные настройки

" Search for selected text, forwards or backwards.
vnoremap <silent> * :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy/<C-R>=&ic?'\c':'\C'<CR><C-R><C-R>=substitute(
  \escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gVzv:call setreg('"', old_reg, old_regtype)<CR>
vnoremap <silent> # :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy?<C-R>=&ic?'\c':'\C'<CR><C-R><C-R>=substitute(
  \escape(@", '?\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gVzv:call setreg('"', old_reg, old_regtype)<CR>

special-k ★★★★
()

Появилось огромное количество наиудобнейших редакторов есть nano

Кхм. Что тут сказать. Твоя аватарка превосходно подходит под твое высказывание

Aswed ★★★★★
()

Про удобные редакторы расскажешь когда тебе нужно будет редактировать на сервере большой файл. К примеру SQL-дамп.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Зачем обязательно большой? Можно и маленький, но на скорости 2400/none :) btw подобные условия не так уж и сложно воспроизводятся, например старый добрый ddos.

anc ★★★★★
()
Ответ на: комментарий от Kroz

И всё равно это быстрее.

Не, чувак это не быстрее, в Eclipse я просто нажимаю Ctr+D и удаляю строку. Поэтому лучше выучи горячие клавиши IDE и изучай джаву. Потому что для навигации по джава коду не нужно гемороиться и воспринимать код как текст, т.к. он изначально воспринимается структурно и для навигации по нему используются простые комбинации клавиш.

А если мне нужно добавить пару опций в ядро или подредактировать ssh конфиг, то nano хватает за глаза. Хотя в 21 веке это просто рука лицо, но ничего не поделаешь.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)

И я не понимаю. vi-подобное не для людей.

a1batross ★★★★★
()
Ответ на: комментарий от foror

Не, чувак это не быстрее, в Eclipse я просто нажимаю Ctr+D и удаляю строку. Поэтому лучше выучи горячие клавиши IDE и изучай джаву.

Чувак! Как ты интересно всё свёл к одному только Ctrl+D и сделал из этого вывод обо всём vim.

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

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

И зачем мне учить какого-то одного взятого IDE

Потому что специализированные инструменты удобнее и точнее универсальных.

заканчивая vim плагинами к тому же IDE

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

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от foror

Ты не слышишь что я говорю.

Ни одно IDE не умеет и десятой доли того, что умеет vim.

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

Как в IDE сделать ровно 77 символов «*» в ряд - удобно при оформлении комментариев в виде блока.

Как в IDE переменные из list_var в var_list, где «var» разное для разных переменных, и это встречается в 10 местах в коде?

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

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

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

Как в IDE сделать ровно 77 символов «*» в ряд - удобно при оформлении комментариев в виде блока.

Мне не нужно делать 77 символов в ряд, IDE автоматически знает, что здесь я хочу поставить комментарий. Для этого мне просто нужно ввести пару символов и перейти на новую строку и я окажусь в автоматически созданном блоке для комментирования кода.

Как в IDE переменные из list_var в var_list, где «var» разное для разных переменных, и это встречается в 10 местах в коде?

Вот так: list_(.{3}) на $1_list - поиск с заменой в любой нормальной IDE. И всё опять же работает по горячим клавишам, не нужно тыкать мышкой.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.