Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.
или даже так:
vim умеет столько всего, что студии(эклипсу, ноутпаду) и не снилось
После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
И тут вдруг появляется засада. Их всех приведенных примеров все упирается в то, что иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы. А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах. Иногда — да, где-то не там и не так, как хотелось бы. Но с другой стороны vi(m) не позволит сделать вот такой
Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? F>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров
Ч0рт. Надо было еще попросиь приводить примеры и юзкейс.
Что такое произвольный набор внешних фильтров, что такое внешние фильтры, и зачем это нужно?
Здравствуйте, Mamut, Вы писали:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?
При (почти) всей этой функциональности vim прекрасно работает в консоли через кучу терминалов и с вероятностью 95% "из коробки" живёт в разных мелких девайсов типа домашних роутеров, не говоря уже о больших серверах.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?
F>При (почти) всей этой функциональности vim прекрасно работает в консоли через кучу терминалов и с вероятностью 95% "из коробки" живёт в разных мелких девайсов типа домашних роутеров, не говоря уже о больших серверах.
Здравствуйте, Mamut, Вы писали:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Еще такой вопрос. Тут в соседнем топике всплывал вопрос про безальтернативность сами знаете какой IDE. Так вот, а в Линуксе-то есть альтернатива vim, сопоставимая с ним по возможностям. Потому как альтернатива той самой IDE есть(в виде того же vim под Windows).
Здравствуйте, Mamut, Вы писали:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
В студии нельзя параллельно набирать статью в TeX'е, писать программу на С и скрипт на баше.
А еще, помню по времена 2003-й студии народ писался кипятком от ее фолдинга (совершенно неуправляемого, насколько я помню). В vim'е как бе всегда было...
И в vim'е очень удобно грепнуть по 10-ку файлов, а потом cp, cn и т.п. прыгать по результатам поиска (помнится в студии тоже через гуй был какой-то поиск по содержимому файлов, но не такой прикольный).
Здравствуйте, DOOM, Вы писали:
DOO>И в vim'е очень удобно грепнуть по 10-ку файлов, а потом cp, cn и т.п. прыгать по результатам поиска (помнится в студии тоже через гуй был какой-то поиск по содержимому файлов, но не такой прикольный).
Здравствуйте, IID, Вы писали:
IID>в студии CTRL+SHIFT+F. А что значит выделенное ?
Видимо можно юзать без смеха
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Mamut, Вы писали:
M>А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах. M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
Естественно, существуют. Ты же не думаешь, что древний холивор «vi vs. emacs» основывается на том, что один умеет, а второй нет? Возможности этих двух примерно равны, а вот подходы очень разные. Разница-то и есть в том, где работать удобнее — M>иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы.
Если же сравнивать vi и (вставить IDE сюда), то быстро обнаружится, что M>vi(m) не позволит сделать вот такой
никакой рефакторинг
потому что vi не IDE. Но если речь об IDE, то тут другая проблема — в них обычно втыкают какие-то никудышние редакторы.
Считая флейм «текстовый редактор vs IDE» закрытым, перейдем к собственно vi. Какие преимущества дает модальный редактор? Только те, которые ты назвал — «позволяет нажать чуть меньше клавиш». Например, в vi команда «удалить 10 символов» звучит как «10x», а в Emacs — «M-1 0 C-d», что по сути то же самое, только без модификаторов. Это, и еще то, что в Emacs можно запускать кучу программ и работать с ними примерно так же, как с текстовыми буферами, и составляет основную разницу между ними.
Теперь о редакторах в IDE на примере MSVS. Они оптимизированы для работы с кодом, например, команды вроде C-k C-c — «закомментировать строку или выделение». Vi особенно полезен, когда нужно просто жонглировать с текстом, преобразовывая его из одной формы в другую. Например, твои действия, если тебе нужно набрать следующее:
Что в vi и Emacs есть, а в типичных редакторах в IDE нет, — это командная строка. Например, добавить комментарий в конец каждой строки, в которой встречается некая подстрока — «:g/подстрока/s/$/ # TODO: take over the world/». Или добавить строчки рядом — «:g/MD_Update(&m,buf,j);/normal "a[p"b]p», где в регистре a лежит что-нибудь вроде «/*\n * Don’t add uninitialised data.» (положено туда с помощью выделения и «"ay»), и в b аналогично — и нужные строчки будут закомментированы, причем блоки будут вставлены с нужным отступом (потому что [p и ]p). Да хотя бы :sort — в редакторе MSVS это есть?
В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно :-). Как-то так.
Здравствуйте, IID, Вы писали:
IID>в студии CTRL+SHIFT+F. А что значит выделенное ?
Ну — ты возможности грепа представляешь? В студии, помнится, разве что метасимволы можно было задавать.
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Вот ведь неугомонный.
На порядок, так на порядок:
Напиши мне в студии 15000 строк вида:
Я больше не буду создавать таких тем!
В виме на это потребуется 5+37+1 = 43 нажатия клавиш.
15000oЯ больше не буду создавать таких тем!<ESC>
В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать.
RO>В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно . Как-то так.
Итого, получается, что vi удобен для редактирования конфигов, написания несложных скриптов и пр. Просто в соседней ветке активно обсуждается его удобство именно при написании программ на с/c++, а это уже совсем другое. Там редактор, как таковой, далеко не главное. Там, все-таки, желательно иметь IDE.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Mamut, Вы писали:
F>>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров M>Ч0рт. Надо было еще попросиь приводить примеры и юзкейс. M>Что такое произвольный набор внешних фильтров, что такое внешние фильтры, и зачем это нужно?
sort, grep. You name it.
Здравствуйте, Mamut, Вы писали:
M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Тут дело в принципе, который можно понять только изучив Вим и начав с ним реально работать.
Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом.
В Виме у тебя на кончиках пальцев сосредоточена истинная мощь. Мощь — это возможность выполнять работу быстрее, меньше отвлекаться на тупое кнопконажимательство.
Вот пример навскидку:
Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:
В обычном редакторе:
END CTRL+LEFT CTRL+LEFT SHIFT+DOWN SHIFT+DOWN SHIFT+END LEFT LEFT LEFT
итого 8 нажатий
VIM:
$ v i (
итого 4 нажатия
В 2 раза меньше. Вроде бы небольшая разница, даже не на порядок. Но самое интересное дальше.
Если форматирование будет более сложным, а количество параметров больше, то в обычном редакторе во-первых, количество нажатий будет расти, а во-вторых мы должны каждый раз индивидуально применять примитивные средства HOME, SHIFT и клавиши курсора для навигации по хитро-форматированному фрагменту кода.
А в Виме остаются все те же 4 нажатия и никакой лишней мыслительной деятельности независимо от того насколько вычурно и сложно отформатирован код
(потому что указанная комбинация сработает в любом случае, главное чтобы курсор оказался внутри скобок). А если нужно выделить текст внутри других парных символов, скажем квадратных скобок или кавычек, то достаточно нажать $ v i "
Здравствуйте, Mamut, Вы писали:
M>>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? F>>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров
M>Ч0рт. Надо было еще попросиь приводить примеры и юзкейс.
M>Что такое произвольный набор внешних фильтров, что такое внешние фильтры, и зачем это нужно?
Маленький пример: пишу небольшой отчёт, что делала большая система, потребовалась мне некая статистика, хочу её выковырять из бинарного файла, который оставил после себя tcpdump (ага, логам я не всегда верю).
:vsplit имя_файла # при вводе имени автокомплит по tab
# окно разбивается на две части, в новой половине открывается этот файл
# обращаю внимание, что файл бинарный, многие символы заменяются специальными последовательностями
# смотрю глазами примерный формат того, что наснимал мне tcpdump
gg # переход в начало файла
shift-v # режим выделения по строкам
shift-g # выделение до конца файла
:'<,'>!perl -lne 'print $1 if /(y=[\w+\.]+)\W/' | sed -e 's/^www\.//' | sort | uniq -c | sort -nr
# на самом деле я нажал "!" и в командной строке появилось :'<,'>!
# в результате получил нужную мне статистику (пример упрощён, в действительности я также считаю
# разные квантили, но это совсем другая история, опять-таки sed здесь не обязательно использовать,
# но я несколько раз переписывал эту строчку, в какой-то момент добавил sed)
shift-v
gg
y # копирую выделенное в буфер
:q! # закрываю бинарный файл без сохранения (можно ZQ, но я ппредпочитаю :q!)
p # вставляю нужные данные в отчёт
Считай "нажатия клавиш"
Да, в случае, если мне не понравилось, что я сделал своим фильтром, лёгким движением руки:
u # отмена всей фильтрации
gg # переход в начало файла
shift-v # режим выделения по строкам
shift-g # выделение до конца файла
! # появляется командная строка
# жму стрелки вверх-вниз, нахожу строку фильтра, редактирую её и повторяю дальнейшие действия
Теперь скажи, как бы ты делал такое в MSVS/Notepad/Eclipse
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, Eugeny__, Вы писали:
E__>Итого, получается, что vi удобен для редактирования конфигов, написания несложных скриптов и пр. Просто в соседней ветке активно обсуждается его удобство именно при написании программ на с/c++, а это уже совсем другое. Там редактор, как таковой, далеко не главное. Там, все-таки, желательно иметь IDE.
С автодополнялкой, которая проберется через шаблонные дебри? Возможно. Хотя я разрабатывал одну программу на C++ сначала в Eclipse, потом в Qt Creator, а потом и вовсе вносил мелкие изменения в vi и было вполне хорошо и удобно. Хотя программа и не особенно велика, всего лишь несколько тысяч строчек.