Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.
или даже так:
vim умеет столько всего, что студии(эклипсу, ноутпаду) и не снилось
После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
И тут вдруг появляется засада. Их всех приведенных примеров все упирается в то, что иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы. А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах. Иногда — да, где-то не там и не так, как хотелось бы. Но с другой стороны vi(m) не позволит сделать вот такой
Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Здравствуйте, IID, Вы писали:
IID>в студии CTRL+SHIFT+F. А что значит выделенное ?
Видимо можно юзать без смеха
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют? M>И тут вдруг появляется засада. Их всех приведенных примеров все упирается в то, что иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы. А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах. Иногда — да, где-то не там и не так, как хотелось бы. Но с другой стороны vi(m) не позволит сделать вот такой
рефакторинг. M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Vim это убогий старый редактор черного цвета. Может быть лет 20 назад он был крут но сейчас это каменный век. Бообще все должно делаться мышкой, максимум есть необходимость использовать CRTL C, CTRL V. А там и этого есть зато есть куча гамна, которая неизвестно как работает.
Здравствуйте, 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% — менее быстро и удобно :-). Как-то так.
Здравствуйте, Mamut, Вы писали:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Здравствуйте, Mamut, Вы писали:
M>>>сферовакуумные примеры меня не интересуют. пока что все вопли про крутость vi(m)'а периодически сводятся к : M>>>- а я могу удалить 10 символов двумя нажатиями клавиш (a.k.a. сферовакуум) M>>>- а я могу использовать регэкспы для замены чего-то (как-будто только в vim'е поддерживаются регекспы)
__>>Что, больше чем на порядок?
__>>ЗЫ __>> — а я могу сгенерировать таким образом кучу insertов для тестовой таблицы, и после небольшой доработки исполнить их на сервере.
M>Ключевой вопрос — какой доработки?
__>>Ах да, это ж сферовакуум.
M>Нет, это пока не сферовакуум
Например так:
insert into my_table(id, name) values (1, 'Phillip Morris 1')
qqyyp<Ctrl-A>l<Ctrl-A>q
100@q
insert into my_table(id, name) values (1, 'Phillip Morris 1')
insert into my_table(id, name) values (2, 'Phillip Morris 2')
insert into my_table(id, name) values (3, 'Phillip Morris 3')
...
insert into my_table(id, name) values (99, 'Phillip Morris 99')
insert into my_table(id, name) values (100, 'Phillip Morris 100')
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
AD>Например так: AD>http://www.youtube.com/watch?v=gsMjQP4yxYw
Здравствуйте, Mamut, Вы писали:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?
При (почти) всей этой функциональности vim прекрасно работает в консоли через кучу терминалов и с вероятностью 95% "из коробки" живёт в разных мелких девайсов типа домашних роутеров, не говоря уже о больших серверах.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, 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, Вы писали:
__>>Например так: __>>
__>>insert into my_table(id, name) values (1, 'Phillip Morris 1')
__>>qqyyp<Ctrl-A>l<Ctrl-A>q __>>100@q
M>мдее... Можно расшифровку?
Ctrl-a — воспринимает набор символов под курсором или первый в строке за курсором как число и увеличивает его на 1 (обратная операция Ctrl-x).
"l" (символ эль, а не единица) — передвинуть курсор на 1 (одну) позицию вправо — чтобы следующий Ctrl-a относился уже ко второй цифре в строке.
yyp — скопировать строку в буфер и тут же её "paste"
qX ... q — записать последовательность команд и сохранить её под именем X
100@X — выполнить последовательность команд, сохранённую под именем X, 100 раз
M>чувствую, пока дойдешь до выучинвания таких вещей, проще один раз написать что-нить типа for i=1 to 100 и т.п.
Это поначалу... а так — человеческий мозг — штука хитрая, и не такие вещи может освоить
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, Mamut, Вы писали:
M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
Например vim умеет не глючить с регэкспами, в отличии от той же студии.
Например vim гораздо легче студии, а потому если нужно подправить один файлик там, один файлик сям — является отличным вариантом.
Например vim умеет банальную подсветку к языкам, про которые студия не знает.
А в целом после освоения — это очень удобный редактор, который дополнит ту же студию.
PS: Ну и vim умеет быть встроенным редактором студии, а вот студия не умеет быть встроенным редактором vim-a
Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов.
Хотя именно как редактор VIM великолепен
G>Вот расшифровка комбинации: G>$ — идем в конец строки G>v — переход в режим выделения G>i — говорим Виму что мы выделяем ВНУТРИ некоего диапазона (я запоминаю по мнемо-слову "inner" или "inside"). Если нажать a ("around" или "all"), то выделение произойдет вместе с окружающиими символами G>( — а это то внутри чего мы выделяем (можно нажать любой парный символ, заданный в конфиге Вима; если нажать w — то выделится слово (буквы) внутри которого курсов, если W — то слово включая спец-символы)
А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?
Здравствуйте, frogkiller, Вы писали:
F>Здравствуйте, Mamut, Вы писали:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?
F>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров
NEdit это умеет, более того, он это умеет делать с прямоугольным выделением, в отличие от vi, который на прямоугольное выделение чихал и все будет делать по всем строкам.
Здравствуйте, Mamut, Вы писали:
M>Ты, возможно, предлагаешь прочитать весь reference, чтобы понять, что именно мне нужно, чтобы сделать жизнь комфортной?
Можешь не читать . Ты же гнусный троль всё равно умеешь пользовать vim и научился тому что тебе надо . С тем, что у vim-а порог вхождения повыше никто не спорит, но если его надо преодолеть reference это вполне адекватный и нужный документ. Его ведь можно не штудировать, а в диагональ прочесть.
А жизнь комфортной делает приятная компания и .
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, 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
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, Mamut, Вы писали:
M>не вижу здесь выделения текста между скобок.
«vi(» — это оно и есть.
M>правда, я не в курсе, что такое i в visual mode (а каким образом узнать это в help'е — неизвестно).
:h v_i
Гуевый help даже пишет на самом видном месте, что если тебя интересует сочетание клавиш, то ищи в формате режим_МОДИФИКАТОР-клавиша. Например, i_CTRL-o.
M>Более того, мышкой это выделится еще быстрее :)
Отнюдь.
M>ага, как же :) я правильно понимаю, что i в visual mode работает иначе, чем i в command mode? ;)
«i» и «a» имеют другие значения в режимах visual и operator pending. «daw» — «delete a word» (отличается от dw, если курсор не на начале слова). «ci"» — «change in quotes» (а «ca"» сотрет и сами знаки кавычек). «vit» — «visual mode in tag», выделить innerHTML (а «vat» — outerHTML).
Здравствуйте, Mamut, Вы писали:
M>И сколько времени уходит на запоминание этого?
У меня — много. Я бы даже сказал — до фига. При этом с предком вот этого редактора я разобрался как-то сразу. У него там тоже система команд, конфиги всякие, но, в отличие от vim, я начал с ним работать практически с ходу. Правда, с тех пор я его основательно забыл, а этот, по ссылке, скачивать не буду, бо платный. Останусь пока на notepad++, а может, nedit попробую. А еще может быть, поставлю снова vim, под влиянием, и попытаюсь опять... Но это последняя попытка будет.
M>ну, допустим. как это делается в vi(m)'е? Где ж ответ? :)
:r !seq 17 31 — имеем числа по одному на строку.
^Vip — выделили их вертикальным блоком.
I ‹Tab›"192.168.42. ‹Esc› — вписали в начало каждой строки.
gv A ", ‹Esc› — вернулись к последнему выделению, дописали концы строк.
RO>>Что в vi и Emacs есть, а в типичных редакторах в IDE нет, — это командная строка. Например, добавить комментарий в конец каждой строки, в которой встречается некая подстрока — «:g/подстрока/s/$/ # TODO: take over the world/».
M>берется в руки редактор с поддержкой реулярных выражений. так что не катит.
И что на что менять? (подстрока.*)$ на \1 # TODO? Неудобно. Опять же, в Vim можно подстроку искать обычным инкрементальным поиском, а потом просто сказать «:g//s/$/что добавить в конец/», и это выполнится для всех строк, содержащих выражение, которое искали последним.
M>можно по-русски? :)
RO>>Да хотя бы :sort — в редакторе MSVS это есть? M>эээ, что?
Выделил строчки, сказал :sort, оно их упорядочило.
RO>>В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно :-). Как-то так. M>Пока что никем это не доказано :)
Мы в КСВ, разве здесь нужно доказывать и аргументировать?!
Здравствуйте, Mamut, Вы писали:
RO>>Выделил строчки, сказал :sort, оно их упорядочило. M>эээ. зачем? 0_О M>то есть я могу представить случай, когда это надо, но не в редакторе кода.
import sha, string, re, tarfile, urlparse, subprocess, time, os, urllib, pwd, random, sys, pycurl
:s/, /\r/g
vap :sort
gv J
:s/ /, /g
import os, pwd, pycurl, random, re, sha, string, subprocess, sys, tarfile, time, urllib, urlparse
M>>А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах. M>>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
RO>Естественно, существуют. Ты же не думаешь, что древний холивор «vi vs. emacs» основывается на том, что один умеет, а второй нет? Возможности этих двух примерно равны, а вот подходы очень разные. Разница-то и есть в том, где работать удобнее — M>>иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы.
RO>Если же сравнивать vi и (вставить IDE сюда), то быстро обнаружится, что M>>vi(m) не позволит сделать вот такой
никакой рефакторинг RO>потому что vi не IDE. Но если речь об IDE, то тут другая проблема — в них обычно втыкают какие-то никудышние редакторы.
Начинается Что именно есть в виме такого, что в других невозможно?
RO> RO>Считая флейм «текстовый редактор vs IDE» закрытым, перейдем к собственно vi. Какие преимущества дает модальный редактор? Только те, которые ты назвал — «позволяет нажать чуть меньше клавиш». Например, в vi команда «удалить 10 символов» звучит как «10x», а в Emacs — «M-1 0 C-d», что по сути то же самое, только без модификаторов.
Дадада. Сферовакуумный программист в сфровакуумном случае сначала вычислит, что ему надо удалить 10 символов, а потом их удалит
RO>Это, и еще то, что в Emacs можно запускать кучу программ и работать с ними примерно так же, как с текстовыми буферами, и составляет основную разницу между ними.
Ну это — да, emacs — отличная ОСь, только в ней нет приличного текстового редактора
RO>Теперь о редакторах в IDE на примере MSVS. Они оптимизированы для работы с кодом, например, команды вроде C-k C-c — «закомментировать строку или выделение». Vi особенно полезен, когда нужно просто жонглировать с текстом, преобразовывая его из одной формы в другую. Например, твои действия, если тебе нужно набрать следующее:
RO>
ну, допустим. как это делается в vi(m)'е? Где ж ответ?
RO>Что в vi и Emacs есть, а в типичных редакторах в IDE нет, — это командная строка. Например, добавить комментарий в конец каждой строки, в которой встречается некая подстрока — «:g/подстрока/s/$/ # TODO: take over the world/».
берется в руки редактор с поддержкой реулярных выражений. так что не катит.
RO>Или добавить строчки рядом — «:g/MD_Update(&m,buf,j);/normal "a[p"b]p», где в регистре a лежит что-нибудь вроде «/*\n * Don’t add uninitialised data.» (положено туда с помощью выделения и «"ay»), и в b аналогично — и нужные строчки будут закомментированы, причем блоки будут вставлены с нужным отступом (потому что [p и ]p).
можно по-русски?
насчет форматирования — если это нормальная IDE, то автоформатирование кода выровняет все, как надо.
RO>Да хотя бы :sort — в редакторе MSVS это есть?
эээ, что?
RO>В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно . Как-то так.
Здравствуйте, Mamut, Вы писали:
G>>VIM: G>>$ v i ( G>>итого 4 нажатия
M>не вижу здесь выделения текста между скобок. правда, я не в курсе, что такое i в visual mode (а каким образом узнать это в help'е — неизвестно). Более того, мышкой это выделится еще быстрее
При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.
Вот расшифровка комбинации:
$ — идем в конец строки
v — переход в режим выделения
i — говорим Виму что мы выделяем ВНУТРИ некоего диапазона (я запоминаю по мнемо-слову "inner" или "inside"). Если нажать a ("around" или "all"), то выделение произойдет вместе с окружающиими символами
( — а это то внутри чего мы выделяем (можно нажать любой парный символ, заданный в конфиге Вима; если нажать w — то выделится слово (буквы) внутри которого курсов, если W — то слово включая спец-символы)
M>shift + down плевать хотели на форматирование. если текста больше, то мышка спасет отца
Ну кстати бывают случаи когда мышкой не обойдешся. Например когда анализируешь серверные логи, в которых тонны сплошного текста без переноса строк и нужно выделить некий кусок внутри парных символов, размером этак строчек на 100-200, которые даже не влезают в экран.
G>>А в Виме остаются все те же 4 нажатия и никакой лишней мыслительной деятельности независимо от того насколько вычурно и сложно отформатирован код
M>ага, как же я правильно понимаю, что i в visual mode работает иначе, чем i в command mode?
Ну да, см.выше
А насчет комманд-моде... Вот ещё одна особенность Вима, которая отличает его от обычного редактора. Это МЕЛОЧИ И НЮАНСЫ.
Скажем, "i" иницирует переход в режим вставки слева от текущего символа ("Insert"), выделенного курсором, а команда "a" — cправа от него ("Append").
Вроде бы мелочь, экономится всего одно лишнее нажатие, но такие мелочи и дают ощущение свободы и мощи при работе в Виме, особенно когда всё это усаживается в подкорку
и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.
M>>не вижу здесь выделения текста между скобок. RO>«vi(» — это оно и есть.
M>>правда, я не в курсе, что такое i в visual mode (а каким образом узнать это в help'е — неизвестно).
RO>:h v_i
RO>Гуевый help даже пишет на самом видном месте, что если тебя интересует сочетание клавиш, то ищи в формате режим_МОДИФИКАТОР-клавиша. Например, i_CTRL-o.
У меня нет гуевого хелра только :help но уже и там нашел это
M>>Более того, мышкой это выделится еще быстрее RO>Отнюдь.
надо сорвенование провести
M>>ага, как же я правильно понимаю, что i в visual mode работает иначе, чем i в command mode?
RO>«i» и «a» имеют другие значения в режимах visual и operator pending. «daw» — «delete a word» (отличается от dw, если курсор не на начале слова). «ci"» — «change in quotes» (а «ca"» сотрет и сами знаки кавычек). «vit» — «visual mode in tag», выделить innerHTML (а «vat» — outerHTML).
угу. и после этого мне говорят про интуитивность, легкозапоминаемость и то, чтто мозг загружать не надо? 0_О
M>>ну, допустим. как это делается в vi(m)'е? Где ж ответ?
RO>:r !seq 17 31 — имеем числа по одному на строку. RO>^Vip — выделили их вертикальным блоком. RO>I ‹Tab›"192.168.42. ‹Esc› — вписали в начало каждой строки. RO>gv A ", ‹Esc› — вернулись к последнему выделению, дописали концы строк.
Ага. Как я где-то раньше сказал, пока о такого доучишься, проще написать for i=1 to 100 в любимом скриптовом языке и не мучаться
RO>>>Что в vi и Emacs есть, а в типичных редакторах в IDE нет, — это командная строка. Например, добавить комментарий в конец каждой строки, в которой встречается некая подстрока — «:g/подстрока/s/$/ # TODO: take over the world/».
M>>берется в руки редактор с поддержкой реулярных выражений. так что не катит.
RO>И что на что менять? (подстрока.*)$ на \1 # TODO? Неудобно.
чем же неудобно? то регулярки удобно, то неудобно
RO>Опять же, в Vim можно подстроку искать обычным инкрементальным поиском, а потом просто сказать «:g//s/$/что добавить в конец/», и это выполнится для всех строк, содержащих выражение, которое искали последним.
в общем, для меня лично это не настолько удобным кажется, как описывается ну, поиск, ну, замена
M>>можно по-русски?
RO>Было: RO>
Банальный comment selection или какон там wrap in comments? Тююю, а я-то думал
RO>>>Да хотя бы :sort — в редакторе MSVS это есть? M>>эээ, что?
RO>Выделил строчки, сказал :sort, оно их упорядочило.
эээ. зачем? 0_О
то есть я могу представить случай, когда это надо, но не в редакторе кода.
RO>>>В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно . Как-то так. M>>Пока что никем это не доказано
RO>Мы в КСВ, разве здесь нужно доказывать и аргументировать?!
Здравствуйте, Sheridan, Вы писали:
п>> Или вы где-то видели клавиатуру без home/end/page up/page down/etc.? S>Ноутбучные клавиатуры. Доступ исключительно через шорткат Fn+клавиша
ну допустим у меня на ноуте эти кнопки есть. но вертикально! сверху вниз — home — pgup — pgdn — end. во где пальцы ломать.
Здравствуйте, vladimir.vladimirovich, Вы писали:
VV>PS: Ну и vim умеет быть встроенным редактором студии, а вот студия не умеет быть встроенным редактором vim-a
Имхо, это уже достоинство Студии, а не вима
Здравствуйте, dmitry_npi, Вы писали:
_>1. Ставим курсор в выделенное место (причем мышкой, так быстрее!)
Практически в бесконечное число раз медленнее.
RO>>import os, pwd, pycurl, random, re, sha, string, subprocess, sys, tarfile, time, urllib, urlparse
RO>>
M>Кстати то ли в NetBeans то ли в PyCharm есть просто пункт меню consolidate imports Два тыка мышкой
Да и в эклипсе есть "organize imports". Один хоткей, или пару кликов. Правда, он не только сортирует, но и убирает неиспользуемые.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, genre, Вы писали:
G>а какая разница? если объективно, то средний программист пишет настолько мало кода в день, что абсолютно пофиг сколько кнопок нажимать.
Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.
Здравствуйте, frogkiller, Вы писали:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?
F>При (почти) всей этой функциональности vim прекрасно работает в консоли через кучу терминалов и с вероятностью 95% "из коробки" живёт в разных мелких девайсов типа домашних роутеров, не говоря уже о больших серверах.
Так он и не претендует. А вот использовать один редактор для всего (и код, и конфиги, и просто заметки) очень удобно.
К тому же, некоторые языки требуют значительной поддержки со стороны IDE, а для некоторых это не так и важно. По агентурным донесениям, желающих каждый раз вручную набирать
Здравствуйте, Mamut, Вы писали:
M>Основной посыл про vi(m) выглядит так:
Mamut, отстань от вима. То, что его не продаёт любимая тобой яблочная компания, ещё не делает его плохим софтом. Ты религиозный фанатик похлеще вимеров и имаксеров, только защищаешь маки и ифоны. А от вима отстань, он сразу видит, что ты к нему с недобрыми намерениями, а так, потроллить, вот и не станет он с тобой работать.
M>>Это все пустые слова и демагогия. Даже в этом топике практически никто не смог привести ни одного внятного примера повышения производительности в виме за исключением каких0то абсолютно маргинальных и редко используемых примеров
RO>Один внятный пример ничего не даст, ты парируешь «но ведь этот один внятный пример встречается раз в год» и будешь прав. Vim просто универсальный текстовый редактор, не оптимизированный ни под что определенное. У него много мелких полезных вещей, и никогда не знаешь наперед, что из них может понадобиться, но стоит только столкнуться с какой-нибудь нетривиальной задачей, и окажется, что ее можно выполнить легко и просто. IDE очень хорошо справляется с рефакторингом, лучше, чем любой текстовый редактор, включая Vim, но рефакторинг по определению работает только с определенными заранее заданными ситуациями — так что IDE делает что-то очень хорошо, а что-то так себе, в то же время как хороший текстовый редактор делает всё на одном уровне.
Хороший текстовый редактр делает все на одном уровне — плохом Потому что код — это не совсем текст. Это весьма структурированный и контекстно-зависимый текст. В итоге мне тут рассказывают сказки про глобальный Find/Replace, о том, что нажать a + начать редактировать — это быстрее, чем нажать Right + начать редактировать и т.п.
RO>Кстати, ничто не мешает сделать IDE, которая использовала бы Vim как текстовый редактор — прикручивать не рефакторинг к Vim, а Vim к инструменту, который умеет рефакторинг и прочее. Некоторые даже пытались, но до конца, похоже, не довели.
RO>А пример всё же приведу, не далее как пару дней назад потребовался.
RO>IDE тут не поможет никак, а Vim справился без проблем.
вот честно — сколько лет надо изучать вим, чтобы выполнить это "легко и просто". Не говоря о том, что, а так понимаю, надо было внести названия директорий в списко преводов, и чисто повезло, что порядок директорий совпал с порядком переводов.
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? F>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров
Ч0рт. Надо было еще попросиь приводить примеры и юзкейс.
Что такое произвольный набор внешних фильтров, что такое внешние фильтры, и зачем это нужно?
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. А что значит выделенное ?
Ну — ты возможности грепа представляешь? В студии, помнится, разве что метасимволы можно было задавать.
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.
Здравствуйте, Eugeny__, Вы писали:
E__>Итого, получается, что vi удобен для редактирования конфигов, написания несложных скриптов и пр. Просто в соседней ветке активно обсуждается его удобство именно при написании программ на с/c++, а это уже совсем другое. Там редактор, как таковой, далеко не главное. Там, все-таки, желательно иметь IDE.
С автодополнялкой, которая проберется через шаблонные дебри? Возможно. Хотя я разрабатывал одну программу на C++ сначала в Eclipse, потом в Qt Creator, а потом и вовсе вносил мелкие изменения в vi и было вполне хорошо и удобно. Хотя программа и не особенно велика, всего лишь несколько тысяч строчек.
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
DOO>В студии нельзя параллельно набирать статью в TeX'е, писать программу на С и скрипт на баше.
Но можно, например, в TexMate/Eclipse/NetBeans и т.п. Не катит
DOO>А еще, помню по времена 2003-й студии народ писался кипятком от ее фолдинга (совершенно неуправляемого, насколько я помню). В vim'е как бе всегда было...
Ну а сейчас нет только у особо ленивых редакторов Не катит
DOO>И в vim'е очень удобно грепнуть по 10-ку файлов, а потом cp, cn и т.п. прыгать по результатам поиска (помнится в студии тоже через гуй был какой-то поиск по содержимому файлов, но не такой прикольный).
Не знаю, что такое «не такой прикольный», поиск по файлам есть почти у всех. Не катит
DOO>ну и т.д. и т.п. много фишечек...
Не вижу никаки и т.д. и т.п. Где те самые killer features, о которых другие не могут даже подумать?
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
__>Вот ведь неугомонный. __>На порядок, так на порядок: __>Напиши мне в студии 15000 строк вида:
__>
__>Я больше не буду создавать таких тем!
__>В виме на это потребуется 5+37+1 = 43 нажатия клавиш. __>15000oЯ больше не буду создавать таких тем!<ESC>
__>В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать. __>
сферовакуумные примеры меня не интересуют. пока что все вопли про крутость vi(m)'а периодически сводятся к :
— а я могу удалить 10 символов двумя нажатиями клавиш (a.k.a. сферовакуум)
— а я могу использовать регэкспы для замены чего-то (как-будто только в vim'е поддерживаются регекспы)
G>Тут дело в принципе, который можно понять только изучив Вим и начав с ним реально работать. G>Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом. G>В Виме у тебя на кончиках пальцев сосредоточена истинная мощь. Мощь — это возможность выполнять работу быстрее, меньше отвлекаться на тупое кнопконажимательство. G>Вот пример навскидку: G>Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:
G>
G>В обычном редакторе: G>END CTRL+LEFT CTRL+LEFT SHIFT+DOWN SHIFT+DOWN SHIFT+END LEFT LEFT LEFT G>итого 8 нажатий
G>VIM: G>$ v i ( G>итого 4 нажатия
не вижу здесь выделения текста между скобок. правда, я не в курсе, что такое i в visual mode (а каким образом узнать это в help'е — неизвестно). Более того, мышкой это выделится еще быстрее
G>В 2 раза меньше. Вроде бы небольшая разница, даже не на порядок. Но самое интересное дальше. G>Если форматирование будет более сложным, а количество параметров больше, то в обычном редакторе во-первых, количество нажатий будет расти, а во-вторых мы должны каждый раз индивидуально применять примитивные средства HOME, SHIFT и клавиши курсора для навигации по хитро-форматированному фрагменту кода.
shift + down плевать хотели на форматирование. если текста больше, то мышка спасет отца
G>А в Виме остаются все те же 4 нажатия и никакой лишней мыслительной деятельности независимо от того насколько вычурно и сложно отформатирован код
ага, как же я правильно понимаю, что i в visual mode работает иначе, чем i в command mode?
G>(потому что указанная комбинация сработает в любом случае, главное чтобы курсор оказался внутри скобок). А если нужно выделить текст внутри других парных символов, скажем квадратных скобок или кавычек, то достаточно нажать $ v i "
G>
M>>Что такое произвольный набор внешних фильтров, что такое внешние фильтры, и зачем это нужно?
F>Маленький пример: пишу небольшой отчёт, что делала большая система, потребовалась мне некая статистика, хочу её выковырять из бинарного файла, который оставил после себя tcpdump (ага, логам я не всегда верю).
F>
F>:vsplit имя_файла # при вводе имени автокомплит по tab
F># окно разбивается на две части, в новой половине открывается этот файл
F># обращаю внимание, что файл бинарный, многие символы заменяются специальными последовательностями
F># смотрю глазами примерный формат того, что наснимал мне tcpdump
F>gg # переход в начало файла
F>shift-v # режим выделения по строкам
F>shift-g # выделение до конца файла
F>:'<,'>!perl -lne 'print $1 if /(y=[\w+\.]+)\W/' | sed -e 's/^www\.//' | sort | uniq -c | sort -nr
F># на самом деле я нажал "!" и в командной строке появилось :'<,'>!
F># в результате получил нужную мне статистику (пример упрощён, в действительности я также считаю
F># разные квантили, но это совсем другая история, опять-таки sed здесь не обязательно использовать,
F># но я несколько раз переписывал эту строчку, в какой-то момент добавил sed)
F>shift-v
F>gg
F>y # копирую выделенное в буфер
F>:q! # закрываю бинарный файл без сохранения (можно ZQ, но я ппредпочитаю :q!)
F>p # вставляю нужные данные в отчёт
F>
F>Считай "нажатия клавиш"
F>Да, в случае, если мне не понравилось, что я сделал своим фильтром, лёгким движением руки: F>
F>u # отмена всей фильтрации
F>gg # переход в начало файла
F>shift-v # режим выделения по строкам
F>shift-g # выделение до конца файла
F>! # появляется командная строка
F># жму стрелки вверх-вниз, нахожу строку фильтра, редактирую её и повторяю дальнейшие действия
F>
F>Теперь скажи, как бы ты делал такое в MSVS/Notepad/Eclipse
Ctrl-W-W
G>Если форматирование будет более сложным, а количество параметров больше, то в обычном редакторе во-первых, количество нажатий будет расти, а во-вторых мы должны каждый раз индивидуально применять примитивные средства HOME, SHIFT и клавиши курсора для навигации по хитро-форматированному фрагменту кода. G>А в Виме остаются все те же 4 нажатия и никакой лишней мыслительной деятельности независимо от того насколько вычурно и сложно отформатирован код
все те же Ctrl-W-W
G>(потому что указанная комбинация сработает в любом случае, главное чтобы курсор оказался внутри скобок). А если нужно выделить текст внутри других парных символов, скажем квадратных скобок или кавычек, то достаточно нажать $ v i "
Здравствуйте, frogkiller, Вы писали:
F>Здравствуйте, Mamut, Вы писали:
F>Маленький пример: пишу небольшой отчёт, что делала большая система, потребовалась мне некая статистика, хочу её выковырять из бинарного файла, который оставил после себя tcpdump (ага, логам я не всегда верю).
F>
F>:vsplit имя_файла # при вводе имени автокомплит по tab
F># окно разбивается на две части, в новой половине открывается этот файл
F># обращаю внимание, что файл бинарный, многие символы заменяются специальными последовательностями
F># смотрю глазами примерный формат того, что наснимал мне tcpdump
F>gg # переход в начало файла
F>shift-v # режим выделения по строкам
F>shift-g # выделение до конца файла
F>:'<,'>!perl -lne 'print $1 if /(y=[\w+\.]+)\W/' | sed -e 's/^www\.//' | sort | uniq -c | sort -nr
F>
Выделяется весь файл?
Тогда достаточно (без предварительного выделения всего файла)
:%!perl -lne 'print $1 if /(y=[\w+\.]+)\W/' | sed -e 's/^www\.//' | sort | uniq -c | sort -nr
Я бы тут воспользовался родными вимовскими средствами, потому как более интерактивно:
Удалил ненужное
:g!/регексп/d
Заменил www
:%s/^www\.//g
Отсортировал, оставив только уникальные строчки
:sort u
Здравствуйте, Mamut, Вы писали:
M>>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
__>>Вот ведь неугомонный. __>>На порядок, так на порядок: __>>Напиши мне в студии 15000 строк вида:
__>>
__>>Я больше не буду создавать таких тем!
__>>В виме на это потребуется 5+37+1 = 43 нажатия клавиш. __>>15000oЯ больше не буду создавать таких тем!<ESC>
__>>В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать. __>>
M>сферовакуумные примеры меня не интересуют. пока что все вопли про крутость vi(m)'а периодически сводятся к : M>- а я могу удалить 10 символов двумя нажатиями клавиш (a.k.a. сферовакуум) M>- а я могу использовать регэкспы для замены чего-то (как-будто только в vim'е поддерживаются регекспы)
Что, больше чем на порядок?
ЗЫ
— а я могу сгенерировать таким образом кучу insertов для тестовой таблицы, и после небольшой доработки исполнить их на сервере.
Здравствуйте, landerhigh, Вы писали:
L>Здравствуйте, gyraboo, Вы писали:
G>>Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом.
L>Воот. Именно так.
после емакса, залезши пару раз в вим, именно так себя и почуствовал.
Здравствуйте, haba_haba_haba, Вы писали:
__>Выделяется весь файл? __>Тогда достаточно (без предварительного выделения всего файла) __>
__>:%!perl -lne 'print $1 if /(y=[\w+\.]+)\W/' | sed -e 's/^www\.//' | sort | uniq -c | sort -nr
__>
В конечном итоге выделяется весь файл, но вообще-то он достаточно большой, поэтому, пока проверял работу фильтра, я делал это на нескольких сотнях строк.
__>Я бы тут воспользовался родными вимовскими средствами, потому как более интерактивно: __>Удалил ненужное __>:g!/регексп/d __>Заменил www __>:%s/^www\.//g __>Отсортировал, оставив только уникальные строчки __>:sort u
В реальности у меня значительно более сложные расчёты, встроенными средствами не всегда удаётся обойтись.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
G>>>VIM: G>>>$ v i ( G>>>итого 4 нажатия
M>>не вижу здесь выделения текста между скобок. правда, я не в курсе, что такое i в visual mode (а каким образом узнать это в help'е — неизвестно). Более того, мышкой это выделится еще быстрее
G>При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.
А следить за текущим контекстом не требует дополнительной концентрации внимания?
M>>shift + down плевать хотели на форматирование. если текста больше, то мышка спасет отца
G>Ну кстати бывают случаи когда мышкой не обойдешся. Например когда анализируешь серверные логи, в которых тонны сплошного текста без переноса строк и нужно выделить некий кусок внутри парных символов, размером этак строчек на 100-200, которые даже не влезают в экран.
С этим согласен
G>>>А в Виме остаются все те же 4 нажатия и никакой лишней мыслительной деятельности независимо от того насколько вычурно и сложно отформатирован код
M>>ага, как же я правильно понимаю, что i в visual mode работает иначе, чем i в command mode?
G>Ну да, см.выше G>А насчет комманд-моде... Вот ещё одна особенность Вима, которая отличает его от обычного редактора. Это МЕЛОЧИ И НЮАНСЫ. G>Скажем, "i" иницирует переход в режим вставки слева от текущего символа ("Insert"), выделенного курсором, а команда "a" — cправа от него ("Append"). G>Вроде бы мелочь, экономится всего одно лишнее нажатие,
извиняюсь, но это маразм
— i + начать набирать текст
против
— left + начать набирать текст
G>но такие мелочи и дают ощущение свободы и мощи при работе в Виме, особенно когда всё это усаживается в подкорку G>и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.
M>>сферовакуумные примеры меня не интересуют. пока что все вопли про крутость vi(m)'а периодически сводятся к : M>>- а я могу удалить 10 символов двумя нажатиями клавиш (a.k.a. сферовакуум) M>>- а я могу использовать регэкспы для замены чего-то (как-будто только в vim'е поддерживаются регекспы)
__>Что, больше чем на порядок?
__>ЗЫ __> — а я могу сгенерировать таким образом кучу insertов для тестовой таблицы, и после небольшой доработки исполнить их на сервере.
Ключевой вопрос — какой доработки?
__>Ах да, это ж сферовакуум.
[...] F>Да, в случае, если мне не понравилось, что я сделал своим фильтром, лёгким движением руки: F>
F>u # отмена всей фильтрации
F>gg # переход в начало файла
F>shift-v # режим выделения по строкам
F>shift-g # выделение до конца файла
F>! # появляется командная строка
F># жму стрелки вверх-вниз, нахожу строку фильтра, редактирую её и повторяю дальнейшие действия
F>
F>Теперь скажи, как бы ты делал такое в MSVS/Notepad/Eclipse
Ну, ни нотепад(простая читалка), ни эклипс со студией(IDE для разработки) не предназначены для подобных вещей. Согласен, в виме именно это сделано классно. Но собирать "некую статистику" по бинарям — это весьма редкий юскейс, и к программированию, вообще говоря, относится очень косвенно. Хотя кому как, конечно, специфики разные бывают.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, IID, Вы писали:
IID>>в студии CTRL+SHIFT+F. А что значит выделенное ? DOO>Ну — ты возможности грепа представляешь?
Не очень. Юзал только в качестве поиска подстрок.
DOO>В студии, помнится, разве что метасимволы можно было задавать.
В студии можно юзать регекспы для поиска.
Здравствуйте, Mamut, Вы писали:
M>угу. и после этого мне говорят про интуитивность, легкозапоминаемость и то, чтто мозг загружать не надо? 0_О
Первое время когда изучаешь Вим, то снятся навязчивые кошмары на тему системы его команд. Потому что информации действительно много.
Но потом мозг переходит в режим когда ты ДУМАЕШЬ на языке этих команд. Многие из них очень легко запоминаются,
т.к. обычно представляют собой первую букву соответствующего слова.
Если вернуться к примеру с выделением внутри парных символов, то во время нажатия кнопок мысли мои выглядят следующим образом:
[$] (идем в конец строки, легко запомнить, т.к. это символ в регэкспах) [v]isual mode [i]nside ["]
M>>угу. и после этого мне говорят про интуитивность, легкозапоминаемость и то, чтто мозг загружать не надо? 0_О
G>Первое время когда изучаешь Вим, то снятся навязчивые кошмары на тему системы его команд. Потому что информации действительно много. G>Но потом мозг переходит в режим когда ты ДУМАЕШЬ на языке этих команд. Многие из них очень легко запоминаются, G>т.к. обычно представляют собой первую букву соответствующего слова.
осталось узнать, сколько времени уходит на из изучение
Здравствуйте, Mamut, Вы писали:
G>>При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.
M>А следить за текущим контекстом не требует дополнительной концентрации внимания?
Нет, не требует. Привычка делать двойной Эскейп после выполнения каждой операции — и ты уже не следишь за контекстом.
Особенно эта привычка актуальна при терминальной работе, когда курсов не меняет свой вид в зависимости от режима )
M>извиняюсь, но это маразм M>- i + начать набирать текст M>против M>- left + начать набирать текст
Не вижу маразма:
i — переход в режим вставки слева от курсора, a — справа от курсора
G>>но такие мелочи и дают ощущение свободы и мощи при работе в Виме, особенно когда всё это усаживается в подкорку G>>и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.
M>И сколько времени уходит на запоминание этого?
Полгода на понимание принципов, а затем — постоянное изучение хелпа.
В этом плане Вим ограничивает круг своих поклонников лицами с соответствующим психотипом.
Если по жизни человек не любит штудировать, копаться в деталях, то Вим не для него.
Ничего плохого в этом нет, просто такой человек.
Здравствуйте, пыщьх, Вы писали:
G>>$ — идем в конец строки
П>А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?
Да без разницы, иногда END, иногда $, это зависит от того где палец ближе на данный момент.
G>>>При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.
M>>А следить за текущим контекстом не требует дополнительной концентрации внимания?
G>Нет, не требует. Привычка делать двойной Эскейп после выполнения каждой операции — и ты уже не следишь за контекстом. G>Особенно эта привычка актуальна при терминальной работе, когда курсов не меняет свой вид в зависимости от режима )
мдее.. а еще других мазохистами называют
M>>извиняюсь, но это маразм M>>- i + начать набирать текст M>>против M>>- left + начать набирать текст
G>Не вижу маразма: G>i — переход в режим вставки слева от курсора, a — справа от курсора
маразм — назвать это мелочбю, которая убыстряюет работу и позволяет не делать лишнего нажатия на клавишу
G>>>но такие мелочи и дают ощущение свободы и мощи при работе в Виме, особенно когда всё это усаживается в подкорку G>>>и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.
M>>И сколько времени уходит на запоминание этого?
G>Полгода на понимание принципов, а затем — постоянное изучение хелпа. G>В этом плане Вим ограничивает круг своих поклонников лицами с соответствующим психотипом. G>Если по жизни человек не любит штудировать, копаться в деталях, то Вим не для него. G>Ничего плохого в этом нет, просто такой человек.
мдее... я лучше что-нибудь другое поштудирую. Эрланг какой0нить или Хаскель...
Здравствуйте, haba_haba_haba, Вы писали:
__>Вот ведь неугомонный. __>На порядок, так на порядок: __>Напиши мне в студии 15000 строк вида:
__>
__>Я больше не буду создавать таких тем!
__>В виме на это потребуется 5+37+1 = 43 нажатия клавиш. __>15000oЯ больше не буду создавать таких тем!<ESC>
__>В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать. __>
В VS2010 Block Selection на нужное количество строк, а потом 37 нажатий.
Здравствуйте, пыщьх, Вы писали:
П>Здравствуйте, gyraboo, Вы писали:
G>>Вот расшифровка комбинации: G>>$ — идем в конец строки G>>v — переход в режим выделения G>>i — говорим Виму что мы выделяем ВНУТРИ некоего диапазона (я запоминаю по мнемо-слову "inner" или "inside"). Если нажать a ("around" или "all"), то выделение произойдет вместе с окружающиими символами G>>( — а это то внутри чего мы выделяем (можно нажать любой парный символ, заданный в конфиге Вима; если нажать w — то выделится слово (буквы) внутри которого курсов, если W — то слово включая спец-символы)
П>А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?
Здравствуйте, IID, Вы писали:
DOO>>В студии, помнится, разве что метасимволы можно было задавать. IID>В студии можно юзать регекспы для поиска.
Когда в последний раз использовал ее (MSVS 2005), они были очень своеобразны. Там уже научились (?<! и прочим перлоподобным полезностям? В самом дот-нете регулярные выражения весьма наворочены, а вот в MSVS?
Здравствуйте, alpha21264, Вы писали:
П>>А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?
A>gvim умеет. Но это требует ПЕРЕНОСИТЬ РУКУ.
Точно. Дао Вима не приветствует ПЕРЕНОСИТЬ РУКУ.
Чем меньше усилий, суеты и активности, тем легче удержаться в потоке энергии.
Здравствуйте, frogkiller, Вы писали:
F>qX ... q — записать последовательность команд и сохранить её под именем X
Я уточню, сохранить ее в регистр X. Потом можно содержимое этого регистра вставить в буфер («"Xp»), отредактировать обычным способом, опять запихать в регистр и исполнить. Причем последовательность команд — это просто набор символов, которые набираются.
За Эклипс не скажу, но вот в ИДЕЕ это реализовано лучше (хотя я Вим не знаю и может автор видео просто не умеет его готовить).
Например, на с 37 по 45 секунду человек вводит имя класса, а потом повторно вводит его в комментариях — в ИДЕЕ в шаблоне можно указать переменную несколько раз, и при вводе она подставляется сразу во все подстановки.
Потом идёт создание переменной/геттера/сеттера — про это я вообще молчу, кошмар какой-то, чем тут гордится? в ИДЕЕ это просто переменная + Alt-Enter и выбрать что я хочу геттер, сеттер или геттер/сеттер.
RO>>>Выделил строчки, сказал :sort, оно их упорядочило. M>>эээ. зачем? 0_О M>>то есть я могу представить случай, когда это надо, но не в редакторе кода.
RO>import sha, string, re, tarfile, urlparse, subprocess, time, os, urllib, pwd, random, sys, pycurl
RO>:s/, /\r/g RO>vap :sort RO>gv J RO>:s/ /, /g
RO>import os, pwd, pycurl, random, re, sha, string, subprocess, sys, tarfile, time, urllib, urlparse
RO>
__>insert into my_table(id, name) values (1, 'Phillip Morris 1')
__>insert into my_table(id, name) values (2, 'Phillip Morris 2')
__>insert into my_table(id, name) values (3, 'Phillip Morris 3')
__>...
__>insert into my_table(id, name) values (99, 'Phillip Morris 99')
__>insert into my_table(id, name) values (100, 'Phillip Morris 100')
Я для таких штук ОпенОфис Калк использую. Оно, конечно, получается как-будто дольше, но если посчитать по-честному, то для человека, которому это требуется несколько раз в год, набор вимовских команд будет запомнить сложно, поэтому каждый раз это будет разглядывание документации, несколько попыток (не верю что такую хренотень с первого раза можно правильно сделать, если не заниматься этим ежедневно) и только потом уже окончательный результат.
Здравствуйте, andrey.desman, Вы писали:
AD>Здравствуйте, Mamut, Вы писали:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
AD>Например так: AD>http://www.youtube.com/watch?v=gsMjQP4yxYw AD>http://vimeo.com/3535418
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, IID, Вы писали:
DOO>>>В студии, помнится, разве что метасимволы можно было задавать. IID>>В студии можно юзать регекспы для поиска.
RO>Когда в последний раз использовал ее (MSVS 2005), они были очень своеобразны. Там уже научились (?<! и прочим перлоподобным полезностям? В самом дот-нете регулярные выражения весьма наворочены, а вот в MSVS?
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
M>>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют? VV>Например vim умеет не глючить с регэкспами, в отличии от той же студии.
Это я не знаю Обычно с регэкспами глючу я, а потом только — тот инструмент, который с ними работает
VV>Например vim гораздо легче студии, а потому если нужно подправить один файлик там, один файлик сям — является отличным вариантом.
Согласен
VV>Например vim умеет банальную подсветку к языкам, про которые студия не знает.
Только еще надо знать, как эту подсветку туда вставлять Я, например, не имею ни малейшего представления Поэтому беру в руки какой-нить texmate/netbeans...
VV>А в целом после освоения — это очень удобный редактор, который дополнит ту же студию. VV>PS: Ну и vim умеет быть встроенным редактором студии, а вот студия не умеет быть встроенным редактором vim-a
RO>>>Выделил строчки, сказал :sort, оно их упорядочило. M>>эээ. зачем? 0_О M>>то есть я могу представить случай, когда это надо, но не в редакторе кода.
RO>import sha, string, re, tarfile, urlparse, subprocess, time, os, urllib, pwd, random, sys, pycurl
RO>:s/, /\r/g RO>vap :sort RO>gv J RO>:s/ /, /g
RO>import os, pwd, pycurl, random, re, sha, string, subprocess, sys, tarfile, time, urllib, urlparse
RO>
Кстати то ли в NetBeans то ли в PyCharm есть просто пункт меню consolidate imports Два тыка мышкой
Здравствуйте, gyraboo, Вы писали:
G>Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:
Практически во всех современных редакторах есть выделение парных скобок за одно нажатие.
Включая угловые скобки и кавычки (это уже про NEdit, за студию не скажу)
Здравствуйте, Roman Odaisky, Вы писали:
RO>POSIX в продуктах Майкрософта? Смешно.
Ничего смешного. Позикс-подсистема раньше вообще была встроенной частью винды, наряду с Win32 и OS/2 подсистемами. Win32 ничем, формально, не "роднее" винде чем POSIX. "Родное" для винды это Native API. Просто Win32 стала популярной, а POSIX как был, так и остался уделом гиков
Здравствуйте, IID, Вы писали:
IID>Здравствуйте, Roman Odaisky, Вы писали:
RO>>POSIX в продуктах Майкрософта? Смешно.
IID>Ничего смешного. Позикс-подсистема раньше вообще была встроенной частью винды,
Была? Я что-то пропустил?
IID>Win32 ничем, формально, не "роднее" винде чем POSIX.
Только окошек без Win32 не будет
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, IID, Вы писали:
IID>>Здравствуйте, Roman Odaisky, Вы писали:
RO>>>POSIX в продуктах Майкрософта? Смешно.
IID>>Ничего смешного. Позикс-подсистема раньше вообще была встроенной частью винды. Posix DOO>Была? Я что-то пропустил?
Была-была. Три подсистемы было изначально. Win32, Posix, OS/2. Последние две выпилены в WinXP и Win2003 (правда в редакции Windows 2003 Compute Cluster вроде Posix выпиливать не стали). В Viste высших редакций Posix вроде опять появился. Гугль в помощь.
IID>>Win32 ничем, формально, не "роднее" винде чем POSIX. DOO>Только окошек без Win32 не будет
Будет Начиная с NT4.0 оконная подсистема в ядре, а стало быть от UserMode подсистем не зависит. Рисуй сколько хочешь. Только оно недокументированное всё, на этом уровне
Здравствуйте, пыщьх, Вы писали:
П> Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?
На моем MacBook Pro их нет. Даже через Fn. При этом клавиатура потрясающе удобная, она просто другая
Здравствуйте, kaa.python, Вы писали:
KP>Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов.
Здравствуйте, kaa.python, Вы писали:
KP>Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов.
Я прикручивал туда поддержку автодополнения от XRefactory. Докрутил до того, что оно начало работать, но потом бросил у ушёл обратно в Студию.
П>> Или вы где-то видели клавиатуру без home/end/page up/page down/etc.? KP>На моем MacBook Pro их нет. Даже через Fn. При этом клавиатура потрясающе удобная, она просто другая
Home = Cmd + Left
End = Cmd + Right
PgUp/PgDn = Fn + Up/Down(не везде, правда, работает, хотя и должно )
M>>Home = Cmd + Left M>>End = Cmd + Right M>>PgUp/PgDn = Fn + Up/Down(не везде, правда, работает, хотя и должно )
KP>Я бы сказал что приведенное тобой это просто некое соглашение, т.к. по моим ощущениям не все приложения реагируют на эти комбинации одинаково.
Ну, на Home/End можно сказать, что реагируют 95% за исключнием TextMate А вот PgUp/PgDn — это увы
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, kaa.python, Вы писали:
KP>>Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов. C>Я прикручивал туда поддержку автодополнения от XRefactory. Докрутил до того, что оно начало работать, но потом бросил у ушёл обратно в Студию.
Почему ушли?
XRefactory плохо работает?
Недокрутили?
Не смогли привыкнуть к vim?
C>Могу поискать код и выложить.
был бы очень признателен.
С уважением Denys Valchuk
IMHO чем больше мнений тем оптимальней выбор варианта... :)
Здравствуйте, Mamut, Вы писали:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
а какая разница? если объективно, то средний программист пишет настолько мало кода в день, что абсолютно пофиг сколько кнопок нажимать.
гораздо важнее навигация по коду, практика показывает, что Find Usages используется на порядке чаще чем текстовый поиск(и пофигу с регэкспами он или нет). и вот в этом разрезе было бы интересно услышать, что умеет vim в этой области.
ну и всякие "удалить текст между скобками" тоже не нужны. нужно refactor->change signature.
Здравствуйте, Tanker, Вы писали:
G>>а какая разница? если объективно, то средний программист пишет настолько мало кода в день, что абсолютно пофиг сколько кнопок нажимать.
T>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.
Здравствуйте, andrey.desman, Вы писали:
AD>Здравствуйте, Mamut, Вы писали:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Это SnipMate? Как это сделать? Табы не прокатывают.
Или другой плагин?
Умоляю!
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
Командный режим работы хорошо проявляет себя при редактировании текста. А как известно, исходники чаще редактируют, чем пишут с нуля. Оперируя логическими блоками ("найти следующую открывающую скобку, удалить слово, поместить в буфе первые три символа следующего слова, удалить все до закрывающей скобки, вставить помещенное в буфер") позволяет быстро записать сложный макрос и затем применять его к тексту. Как правило в таких случаях случается огромный выигрыш во времени. Задачи вида "а теперь мы по всем исходникам ищем во-о-о-о-от такую конструкцию и меняем ее вот таким образом" решается очень быстро — первый раз мы выполняем это командами (причем можно использовать даже логику — вида "если то-то то делать одно, в противном случае другое") а затем просто нажимаем кнопочку "повторить для всех вхождений" и смотрим как вим перемалывает наши десять мегабайт исходников.
В принципе, в сферическом мире в вакууме, где код идеально организован и массовые правки архитектурно не нужны, все редакторы примерно одинаковые. Но на практике это, увы, не так. И местами вим может за пять минут выполнить задачу, которую в той же вижуалке стучать по клавишам целый день, да к тому же есть риск опечататься.
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
EOH>Командный режим работы хорошо проявляет себя при редактировании текста. А как известно, исходники чаще редактируют, чем пишут с нуля.
Именно. Поэтому, наверное, логичнее иметь интерактивный режим по умолчанию
EOH>Оперируя логическими блоками ("найти следующую открывающую скобку, удалить слово, поместить в буфе первые три символа следующего слова, удалить все до закрывающей скобки, вставить помещенное в буфер") позволяет быстро записать сложный макрос и затем применять его к тексту.
Что такое сложный макрос? Если он сложный, это значит, что применяется он редко. Например, описанная тобой последовательность действий в виде макроса не нужна даже даром. Потому что именно такая последовательность действий слишком специфична, чтобы быть полезной.
EOH>Как правило в таких случаях случается огромный выигрыш во времени. Задачи вида "а теперь мы по всем исходникам ищем во-о-о-о-от такую конструкцию и меняем ее вот таким образом" решается очень быстро — первый раз мы выполняем это командами (причем можно использовать даже логику — вида "если то-то то делать одно, в противном случае другое") а затем просто нажимаем кнопочку "повторить для всех вхождений" и смотрим как вим перемалывает наши десять мегабайт исходников.
Описанное — это рефакторинг, который для многих языков в некоторых IDE намного умнее, чем банальная последовательность действий.
Не говоря уже о том, что «воооот такая конструкция» вряд ли будет встречаться в коде много раз.
EOH>В принципе, в сферическом мире в вакууме, где код идеально организован и массовые правки архитектурно не нужны, все редакторы примерно одинаковые. Но на практике это, увы, не так. И местами вим может за пять минут выполнить задачу, которую в той же вижуалке стучать по клавишам целый день, да к тому же есть риск опечататься.
Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).
M>Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).
Я рассказываю исключительно про свое впечатление за последние пять лет плотной работы с VIM. В целом я уже более десяти лет активно использую Visual Studio, много лет использовал emacs, так что есть с чем сравнивать. Продавать вам VIM я не собираюсь, так что специально вспоминать и описывать здесь ситуации сложной замены, когда VIM экономил очень много времени, не буду — достаточно того, что я этими соображениями поделился.
Здравствуйте, haba_haba_haba, Вы писали:
__>В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать. __>
Подсчитал, в VS2008 получилось поменьше: 39 + набивка самой строки = 77
M>>Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).
EOH>Я рассказываю исключительно про свое впечатление за последние пять лет плотной работы с VIM. В целом я уже более десяти лет активно использую Visual Studio, много лет использовал emacs, так что есть с чем сравнивать. Продавать вам VIM я не собираюсь, так что специально вспоминать и описывать здесь ситуации сложной замены, когда VIM экономил очень много времени, не буду — достаточно того, что я этими соображениями поделился.
Ну вот. Так — всегда. Никто не способен описать, что такого они делают, в чем vim рулит.ю Все заканчивается на «я дал представление»
Я ни в жизнь не позволю себе запускать автоматическое «сложное преобразование» на проекте какого-либо объема в случае, если это преобразовнаие основывается только лишь на «последовательности действий». Потому что это ничем не отличается от глобального Find Replace. Потому что даже рефакторинг, который основывается на гораздо большей информации, чем просто последовательность действий, иногда дает сбои.
Я могу ошибаться. В этом была вся идея этого топика. Но вот вы отказываетесь рассказать, в чем я ошибаюсь Ну, пустыми заявлениями и я могу воздух посотрясать
Аналогично со «сложными макросами». Сложные макросы для манипуляции текста я перестал писать еще в 95-м ворде, потому что чем макрос сложнее, чем уже сфера его применения и тем он бесполезнее. В какой-то момент легче провести манипуляции заново, чем вспоминать, что именно делает сложный макрос, есть ли он вообще, и можно ли его применить в данной конкретной ситуации.
Опять же. Я могу ошибаться. Но вот вы отказываетесь рассказать, в чем я ошибаюсь Но, извините, «найти следующую открывающую скобку, удалить слово, поместить в буфе первые три символа следующего слова, удалить все до закрывающей скобки, вставить помещенное в буфер» — это не такая уж и часто повторяющаяся последовательность действий, чтобы ради нее заводить макрос явялется банальными манипуляциями с текстом. Некоторые из которых да, могут выполнятся в виме удобнее.
Здравствуйте, Mamut, Вы писали:
M>Аналогично со «сложными макросами». Сложные макросы для манипуляции текста я перестал писать еще в 95-м ворде, потому что чем макрос сложнее, чем уже сфера его применения и тем он бесполезнее. В какой-то момент легче провести манипуляции заново, чем вспоминать, что именно делает сложный макрос, есть ли он вообще, и можно ли его применить в данной конкретной ситуации.
В Виме макросы, как правило, не пишутся и не сохраняются. Просто, когда необходимо несколько раз повторить одну и ту же последовательность действий, то используется режим записи команд в регистр: q{0-9a-zA-Z"}.
M>>Аналогично со «сложными макросами». Сложные макросы для манипуляции текста я перестал писать еще в 95-м ворде, потому что чем макрос сложнее, чем уже сфера его применения и тем он бесполезнее. В какой-то момент легче провести манипуляции заново, чем вспоминать, что именно делает сложный макрос, есть ли он вообще, и можно ли его применить в данной конкретной ситуации.
DR>В Виме макросы, как правило, не пишутся и не сохраняются. Просто, когда необходимо несколько раз повторить одну и ту же последовательность действий, то используется режим записи команд в регистр: q{0-9a-zA-Z"}.
Здравствуйте, Mamut, Вы писали:
M>Основной посыл про vi(m) выглядит так: M>
M>Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.
M>или даже так: M>
M>vim умеет столько всего, что студии(эклипсу, ноутпаду) и не снилось
Не так- Eclipse может такое, что редактору студии не снилось (в плане рефакторинга и поддержки дофига языков), а еще он есть под маком и линухом. Vim хорош, когда надо пролезть через ssh например, или по-быстрому подправить файл. Но в то же время править файлики через sftp в TextWrangler на порядок удобнее вима.
Здравствуйте, genre, Вы писали:
T>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.
G>можно юзкейс?
Здравствуйте, Tanker, Вы писали:
T>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.
G>>можно юзкейс?
T>Refactoring Rename
вот именно что рефакторинг. его и надо делать специальным тулом. а не заменой текста по всему проекту.
Здравствуйте, Denys V., Вы писали:
KP>>>Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов. C>>Я прикручивал туда поддержку автодополнения от XRefactory. Докрутил до того, что оно начало работать, но потом бросил у ушёл обратно в Студию. DV>Почему ушли?
Отладчика нормального нет, и даже после всех докручиваний оно не работает нормально.
DV>XRefactory плохо работает?
Ага. Тем более, что он умер. Сейчас рулит clang: http://blogs.gnome.org/jessevdk/2011/09/10/gedit-clang-plugin-progress/
DV>Недокрутили? DV>Не смогли привыкнуть к vim?
Я сейчас vim использую как простой редактор.
C>>Могу поискать код и выложить. DV>был бы очень признателен.
В связи со смертью XRefactory это не особо поможет.
Здравствуйте, Eye of Hell, Вы писали:
M>>Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).
EOH>Я рассказываю исключительно про свое впечатление за последние пять лет плотной работы с VIM. В целом я уже более десяти лет активно использую Visual Studio, много лет использовал emacs, так что есть с чем сравнивать. Продавать вам VIM я не собираюсь, так что специально вспоминать и описывать здесь ситуации сложной замены, когда VIM экономил очень много времени, не буду — достаточно того, что я этими соображениями поделился.
Это ты с идеей не работал . У нее настолько потрясающие возможности интеллектуальной работы с кодом(т.е. она знает все про твой код, причем на разных языках, даже если они в одном файле вперемешку), что читать про возможности работы с кодом текстового редактора просто смешно. Как текстовый редактор ВИМ отличен, но что он знает про структуру проекта(и связанных с ним), используемые либы, используемые технологии? Он умеет в пару кликов привязаться к серверу приложений(заодно выкачав его, поставив и настроив)? Он умеет перестроить кусок кода с сохранением функционала в другую структуру? И если я начну перечислять все возможности, я сегодня спать не ляжу.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
T>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.
G>>можно юзкейс?
T>Refactoring Rename
Прекрасный пример. Если у нас совпадают имена, но не совпадают реальные объекты(т.е. они никак не связаны) вим сможет это определить? А если у нас класс(ну вот будем про джаву говорить, например) обявлен в джава коде, но при этом в другом пакете есть одноименный, но они оба использубтся в скриптлетах jsp(где используется также одноименный js объект, и есть параметры тэга html с таким же именем), и в коде на scala, а также в xml конфигах спринга, сможет ли вим корректно переименовать(одним действием программиста) использования только этого класса, на затронув логически неподходящие, хоть и называющиеся так же сущности в различных забавных местах?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, gyraboo, Вы писали:
G>Здравствуйте, Mamut, Вы писали:
G>>>При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.
M>>А следить за текущим контекстом не требует дополнительной концентрации внимания?
G>Нет, не требует. Привычка делать двойной Эскейп после выполнения каждой операции — и ты уже не следишь за контекстом. G>Особенно эта привычка актуальна при терминальной работе, когда курсов не меняет свой вид в зависимости от режима )
...
я уже давно это повесил на jj, тогда и руки не надо двигать.
Здравствуйте, Mamut, Вы писали:
M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
быстро запуститься и быстро выключиться.. остальные т.н. "преимущества" условны и/или имеют аналоги..
Здравствуйте, Eugeny__, Вы писали:
T>>Refactoring Rename
E__>Прекрасный пример. Если у нас совпадают имена, но не совпадают реальные объекты(т.е. они никак не связаны) вим сможет это определить? А если у нас класс(ну вот будем про джаву говорить, например) обявлен в джава коде, но при этом в другом пакете есть одноименный, но они оба использубтся в скриптлетах jsp(где используется также одноименный js объект, и есть параметры тэга html с таким же именем), и в коде на scala, а также в xml конфигах спринга, сможет ли вим корректно переименовать(одним действием программиста) использования только этого класса, на затронув логически неподходящие, хоть и называющиеся так же сущности в различных забавных местах?
Здравствуйте, genre, Вы писали:
T>>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет. G>>>можно юзкейс? T>>Refactoring Rename
G>вот именно что рефакторинг. его и надо делать специальным тулом. а не заменой текста по всему проекту.
А можно ссылку, где я предложил делать рефакторинг заменой текста по всему проекту ?
Здравствуйте, Tanker, Вы писали:
T>>>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет. G>>>>можно юзкейс? T>>>Refactoring Rename
G>>вот именно что рефакторинг. его и надо делать специальным тулом. а не заменой текста по всему проекту.
T>А можно ссылку, где я предложил делать рефакторинг заменой текста по всему проекту ?
А, я понял, Ctrl-R R это как раз рефакторинг в студии? у меня в идее это реплейс.
Ну тогда возражения снимаются, но возникает вопрос с чем ты споришь, с моим утверждением, что продвинутые способы поиска и замены это не самое важное?
Здравствуйте, genre, Вы писали:
G>Ну тогда возражения снимаются, но возникает вопрос с чем ты споришь, с моим утверждением, что продвинутые способы поиска и замены это не самое важное?
Я указал тебе на ошибку в твоей аргументации и даже выделил, где именно "G>а какая разница? если объективно, то средний программист пишет настолько мало кода в день, что абсолютно пофиг сколько кнопок нажимать. "
Почему ты решил, что я оспариваю актуальность продвинутых способов поиска и замены мне свершенно не ясно.
Здравствуйте, Tanker, Вы писали:
T>Я указал тебе на ошибку в твоей аргументации и даже выделил, где именно "G>а какая разница? если объективно, то средний программист пишет настолько мало кода в день, что абсолютно пофиг сколько кнопок нажимать. " T>Почему ты решил, что я оспариваю актуальность продвинутых способов поиска и замены мне свершенно не ясно.
похоже ты не понял о чем я.
последнее предложение из первого поста в теме: M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия
так вот я именно про это. что на самом деле не важно 10 нажатий кнопок надо, чтобы сделать замену/рефакторинг/итд или 5. потому что это экономия пары минут в день максимум.
Здравствуйте, genre, Вы писали:
G>так вот я именно про это. что на самом деле не важно 10 нажатий кнопок надо, чтобы сделать замену/рефакторинг/итд или 5. потому что это экономия пары минут в день максимум.
Здравствуйте, gyraboo, Вы писали:
G>В обычном редакторе: G>END CTRL+LEFT CTRL+LEFT SHIFT+DOWN SHIFT+DOWN SHIFT+END LEFT LEFT LEFT G>(потому что указанная комбинация сработает в любом случае, главное чтобы курсор оказался внутри скобок). А если нужно выделить текст внутри других парных символов, скажем квадратных скобок или кавычек, то достаточно нажать $ v i "
G>
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Roman Odaisky, Вы писали: RO> RO>Считая флейм «текстовый редактор vs IDE» закрытым, перейдем к собственно vi. Какие преимущества дает модальный редактор? Только те, которые ты назвал — «позволяет нажать чуть меньше клавиш». Например, в vi команда «удалить 10 символов» звучит как «10x», а в Emacs — «M-1 0 C-d», что по сути то же самое, только без модификаторов. Это, и еще то, что в Emacs можно запускать кучу программ и работать с ними примерно так же, как с текстовыми буферами, и составляет основную разницу между ними.
Здравствуйте, Alessa, Вы писали:
M>>Основной посыл про vi(m) выглядит так: M>>
M>>Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.
A>одно слово перечеркнёт всё вышенаписанное: emacs
И что, емакс умеет работать с кодом?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Mamut, Вы писали:
M>Ага. Как я где-то раньше сказал, пока о такого доучишься, проще написать for i=1 to 100 в любимом скриптовом языке и не мучаться
Да не вопрос:
for i in range(10): print('192.168.1.%d' % i)
Shift+V
:!python
и выделенная строка заменяется на
192.168.1.0
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
Тут ведь никто не заставляет тебя учить всё, что написано в вимовском хелпе. Изучаешь ту часть, которая помогает тебе работать с большим комфортом. Ту строку кода можно написать на любом языке и отдать внешней тулзе, а результат получишь обратно.
Если ты будешь возражать на "Изучаешь ту часть, которая помогает тебе работать с большим комфортом" доводом — "чтобы понять, что нужно, нужно много о нём прочесть", то сразу скажу, что с любым инструментом так, включая любимый скриптовый язык.
Здравствуйте, Alessa, Вы писали:
E__>>И что, емакс умеет работать с кодом?
A>((умеет A> (http://lurkmore.to/GNU_Emacs) всё))
Ну, лурку почитать это хорошо, но если говорить серьезно. Как на емаксе произвести корректное переименование класса в большом проекте(самый банальный и простой рефакторинг), где этот класс используется в разных ЯП и в разных типах файлов, и при этом в проекте есть класс с таким же именем, а также другие объекты с таким же именем?
При этом вариант "написать скрипт на лиспе" меня не устраивает совершенно. Мне чтобы парой кликов.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
M>Тут ведь никто не заставляет тебя учить всё, что написано в вимовском хелпе. Изучаешь ту часть, которая помогает тебе работать с большим комфортом.
Я тут все пытаюсь понять, что же мне даст этот комфорт. Пока не вижу. Например, каким образом я могу найти в хелпе про Shift+V?
M>Ту строку кода можно написать на любом языке и отдать внешней тулзе, а результат получишь обратно.
M>Если ты будешь возражать на "Изучаешь ту часть, которая помогает тебе работать с большим комфортом" доводом — "чтобы понять, что нужно, нужно много о нём прочесть", то сразу скажу, что с любым инструментом так, включая любимый скриптовый язык.
Да, буду возражать, и уже возразил. Потому что выделенная фраза — это недостижимый сферовакуум.
Здравствуйте, Mamut, Вы писали:
M>Я тут все пытаюсь понять, что же мне даст этот комфорт. Пока не вижу. Например, каким образом я могу найти в хелпе про Shift+V?
M>>Я тут все пытаюсь понять, что же мне даст этот комфорт. Пока не вижу. Например, каким образом я могу найти в хелпе про Shift+V?
AD>Не "Shift+v", а "V". AD>:help V
Это все пустые слова и демагогия. Даже в этом топике практически никто не смог привести ни одного внятного примера повышения производительности в виме за исключением каких0то абсолютно маргинальных и редко используемых примеров
Здравствуйте, Gorbatich, Вы писали:
G>Vim это убогий старый редактор черного цвета. Может быть лет 20 назад он был крут но сейчас это каменный век. Бообще все должно делаться мышкой, максимум есть необходимость использовать CRTL C, CTRL V. А там и этого есть зато есть куча гамна, которая неизвестно как работает.
Настоящие хипстеры программируют пальцем, причём не выходя из Фейсбука. Мышь если и не каменный век, то в лучшем случае бронзовый.
G>Vim это убогий старый редактор черного цвета. Может быть лет 20 назад он был крут но сейчас это каменный век. Бообще все должно делаться мышкой, максимум есть необходимость использовать CRTL C, CTRL V. А там и этого есть зато есть куча гамна, которая неизвестно как работает.
Да ну нет, для опеделенных задач он может быть хорош. Как простецкий sed можер рвать все и вся при некоторых условиях. Но для работы с кодом — это ничто, и полное уродство. Я поработал с Идеей — ну вот реально "develop with pleasure". Даже на весьма сильный Эклипс не хочется возвращаться, про убогую Студию вообще молчу. Что-то другое — это вообще трэш.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Mamut, Вы писали:
M>>На вот ещё почитай http://robots.thoughtbot.com/post/13164810557/the-vim-learning-curve-is-a-myth
M>Это все пустые слова и демагогия. Даже в этом топике практически никто не смог привести ни одного внятного примера повышения производительности в виме за исключением каких0то абсолютно маргинальных и редко используемых примеров
Один внятный пример ничего не даст, ты парируешь «но ведь этот один внятный пример встречается раз в год» и будешь прав. Vim просто универсальный текстовый редактор, не оптимизированный ни под что определенное. У него много мелких полезных вещей, и никогда не знаешь наперед, что из них может понадобиться, но стоит только столкнуться с какой-нибудь нетривиальной задачей, и окажется, что ее можно выполнить легко и просто. IDE очень хорошо справляется с рефакторингом, лучше, чем любой текстовый редактор, включая Vim, но рефакторинг по определению работает только с определенными заранее заданными ситуациями — так что IDE делает что-то очень хорошо, а что-то так себе, в то же время как хороший текстовый редактор делает всё на одном уровне.
Кстати, ничто не мешает сделать IDE, которая использовала бы Vim как текстовый редактор — прикручивать не рефакторинг к Vim, а Vim к инструменту, который умеет рефакторинг и прочее. Некоторые даже пытались, но до конца, похоже, не довели.
А пример всё же приведу, не далее как пару дней назад потребовался.
С удовольствием послушаю про сеанс вимовской магии, которая умеет из этой строки
RO>("gastro", { "en": "Gastroenterology" , "fr": u"Gastroenterologie" }),
+ вот этой
RO>
Cardio Endocrinology Gen Int Med GI Hem-Onc ID Nephro Neuro Pneumo Rhumato
Делать вот такую.
RO>("gastro", "GI", { "en": "Gastroenterology" , "fr": u"Gastroenterologie" }),
RO>а Vim справился без проблем.
Здравствуйте, avpavlov, Вы писали:
A>С удовольствием послушаю про сеанс вимовской магии, которая умеет из этой строки RO>>("gastro", { "en": "Gastroenterology" , "fr": u"Gastroenterologie" }), A>+ вот этой RO>>
Cardio Endocrinology Gen Int Med GI Hem-Onc ID Nephro Neuro Pneumo Rhumato
Это как раз очень просто с использованием вертикальных блоков. Они вообще очень простые — надо знать только команду ˆV и что в этом режиме делают I/A/c и ^/$.
:s%␣␣%\r%g — разбить строку на несколько (ну или взять вывод ls -1 вместо просто ls)
ddjjp — привести порядок строк к нужному (одна не на месте)
vipˆV I"‹Esc› gv$A",‹Esc› gvy — взять в кавычки, скопировать
ткнуть мышкой в «{», нажать P — готово.
Здравствуйте, Mamut, Вы писали:
M>Хороший текстовый редактр делает все на одном уровне — плохом :) Потому что код — это не совсем текст. Это весьма структурированный и контекстно-зависимый текст. В итоге мне тут рассказывают сказки про глобальный Find/Replace, о том, что нажать a + начать редактировать — это быстрее, чем нажать Right + начать редактировать и т.п. :)
Тем не менее, IDE не предоставляют универсальных средств работы с кодом как с AST. Как бы это могло выглядеть? Lisp-подобные макросы? XSLT?
Рефакторинг — мощный инструмент, но нисколько не универсальный. Например, Eclipse умеет превращать !A && !B в !(A || B), чего текстовый редактор, конечно, автоматически не сделает. А вот функция «поменять местами блоки if и else» там не предусмотрена, и нужно это делать обычными текстовыми операциями.
Всё равно приходится каждый день делать более 9000 операций вида «поменять местами две строчки», и тут удобный универсальный редактор очень сильно помогает.
RO>Это как раз очень просто с использованием вертикальных блоков. Они вообще очень простые — надо знать только команду ˆV и что в этом режиме делают I/A/c и ^/$.
RO>:s%␣␣%\r%g — разбить строку на несколько (ну или взять вывод ls -1 вместо просто ls) RO>ddjjp — привести порядок строк к нужному (одна не на месте) RO>vipˆV I"‹Esc› gv$A",‹Esc› gvy — взять в кавычки, скопировать RO>ткнуть мышкой в «{», нажать P — готово.
Как это было бы в ИДЕЕ
1) Допустим у нас есть строка папок, разделённая табуляциями (или чем там она разделена, не важно)
2) Вставляю эту строку в редактор
3) Ctrl-W Ctrl-W (выделяю строку целиком)
4) Ctrl-R (замена) Alt-E (регэксп режим) Alt-S (заменять только в выделенном)
5) \t (поле поиска выделено по умолчанию, поэтому ввожу сразу)
6) TAB (переход в поле замены)
7) ",\n"
8) Alt-A (заменить все вхождения, заменяем только разделители, перед первым и после последнего обрабатываем отдельно, шаги 15-16 и 9-14)
9) Ctrl-A (выделить текст в поле замены)
10) ", (заменить его на кавычку и запятую)
11) Shift-TAB (вернуться в поле поиска)
12) Ctrl-A (выделить текст в поле поиска)
13) $ (заменить его на знак доллара)
14) Alt-A (заменить все вхождения, в данном случае это единственное место, "конец выделения")
15 ESC (выйти из режима замены)
16) " (при выходе из режима замены курсор всегда стоит в начале блока)
17) Ставлю курсор в ту строку, которую хочу передвинуть (мышкой или клавишами, на любителя)
18) Ctrl-Shift-UP (или DOWN — двигаю строку в нужную позицию)
19) Возвращаюсь в начало (мышкой или клавишами, на любителя)
20) Выделяю блок текста (мышкой или клавишами, на любителя)
21) Ctrl-C
22) Ставлю курсор в позицию, куда я хочу поместить блок (мышкой или клавишами, на любителя)
23) Ctrl-Shift-INSERT (переход в режим вертикальных блоков)
24) Ctrl-V (готово)
Теперь в режиме крипто-кодов, как у тебя. Я не знаю как обозначается Alt и Shift, я обозначу их как & и ~
1) ^w ^w ^r &e &s \t <Tab> ",\n" &a ^a ", ~<Tab> ^a $ &a <Esc> "
2) <Down> <Down> ^~<Down> ^~<Down> ^~<Down> <Up> <Up> <Up> <Up> <Up>
3) Выделяю блок текста мышкой
4) ^c
5) Ставлю курсор мышкой в позицию, куда я хочу поместить блок
6) ^~<Insert> ^v
RO>Рефакторинг — мощный инструмент, но нисколько не универсальный. Например, Eclipse умеет превращать !A && !B в !(A || B), чего текстовый редактор, конечно, автоматически не сделает. А вот функция «поменять местами блоки if и else» там не предусмотрена, и нужно это делать обычными текстовыми операциями.
ИДЕЯ умеет менять местами if else — подозреваю что Эклипс тоже умеет, а ты плохо смотрел.
RO>Всё равно приходится каждый день делать более 9000 операций вида «поменять местами две строчки», и тут удобный универсальный редактор очень сильно помогает.
ИДЕЯ умеет менять местами 2 строчки, дублировать строчки, объединять строчки — ну и рефакторинг заодно
RO>Тем не менее, IDE не предоставляют универсальных средств работы с кодом как с AST. Как бы это могло выглядеть? Lisp-подобные макросы? XSLT?
Платная версия ИДЕИ умеет Structural Search/Replace — но я практически не пользовался, сложновато вышло у них и ниша неясна. За массовые и немассовые простые случаи отвечает рефакторинг, немассовые сложные проще исправить руками чем настроить этот поиск, массовые сложные — мне не встречались
И вообще, рефакторинг в ИДЕЕ умеет много чего кроме того что про него и так знают
Например, когда через рефакторинг добавляешь параметр в метод, то ИДЕЯ может
1) протащить этот параметр через иерархию вызовов (т.е. добавить новый параметр и в выызывающие методы)
2) поискать возможный аргумент в контексте — например если перед вызовом ф-ции есть локальная переменная данного типа или поле класса — подставить их в вызов
M>>Хороший текстовый редактр делает все на одном уровне — плохом Потому что код — это не совсем текст. Это весьма структурированный и контекстно-зависимый текст. В итоге мне тут рассказывают сказки про глобальный Find/Replace, о том, что нажать a + начать редактировать — это быстрее, чем нажать Right + начать редактировать и т.п.
RO>Тем не менее, IDE не предоставляют универсальных средств работы с кодом как с AST. Как бы это могло выглядеть? Lisp-подобные макросы? XSLT?
Универсальные средства обычно полный отстой. По определению универсальности
RO>Рефакторинг — мощный инструмент, но нисколько не универсальный. Например, Eclipse умеет превращать !A && !B в !(A || B), чего текстовый редактор, конечно, автоматически не сделает. А вот функция «поменять местами блоки if и else» там не предусмотрена, и нужно это делать обычными текстовыми операциями.
RO>Всё равно приходится каждый день делать более 9000 операций вида «поменять местами две строчки», и тут удобный универсальный редактор очень сильно помогает.
Ну так покажите мне, в чем он помогает Пойми, я не против редакторов вообще и вима в целом Но пока что на тонны воды и демагогии — практически ни одного внятного примера. Причем, можно почитать мои ответы — я соглашаюсь с описываемыми удобствами, если таковые есть
Здравствуйте, Mamut, Вы писали:
M>Ну так покажите мне, в чем он помогает Пойми, я не против редакторов вообще и вима в целом Но пока что на тонны воды и демагогии — практически ни одного внятного примера. Причем, можно почитать мои ответы — я соглашаюсь с описываемыми удобствами, если таковые есть
Я вот тоже не против вима как _текстового_ редактора. Но я уже писал — для кода он не подходит. Ибо это попытка забивать гвозди шуруповертом.
Я так и не дождался, как же мне в виме сделать банальную для любой нормальной IDE вещь — корректно переименовать класс, когда он используется в самых разных местах и разных языках/файлах(см. выше посты). Все как воды в рот набрали, твердят про какие-то "поменять две строчки местами".
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Mamut, Вы писали:
M>Ну так покажите мне, в чем он помогает Пойми, я не против редакторов вообще и вима в целом Но пока что на тонны воды и демагогии — практически ни одного внятного примера. Причем, можно почитать мои ответы — я соглашаюсь с описываемыми удобствами, если таковые есть
Вряд ли ты получишь такой пример. Например я использую текстовые редакторы почти исключительно для чтения логов, конфигов, иногда XML, в общем, файлов, не имеющих прямого отношения к коду. Но и в этом случае я не использую vim. Использовать текстовые редакторы для кодирования перестал, как только появилась нормальная IDE для Фортрана под Винду.