Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 09:23
Оценка: 4 (4) +2 :))
Основной посыл про vi(m) выглядит так:

Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.


или даже так:

vim умеет столько всего, что студии(эклипсу, ноутпаду) и не снилось



После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?

И тут вдруг появляется засада. Их всех приведенных примеров все упирается в то, что иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы. А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах. Иногда — да, где-то не там и не так, как хотелось бы. Но с другой стороны vi(m) не позволит сделать вот такой
Автор: Пацак
Дата: 24.02.10
рефакторинг.

Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


dmitriid.comGitHubLinkedIn
Re[3]: Про vi(m)
От: Erop Россия  
Дата: 25.02.10 11:15
Оценка: :))) :))) :)
Здравствуйте, IID, Вы писали:

IID>в студии CTRL+SHIFT+F. А что значит выделенное ?

Видимо можно юзать без смеха
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Про vi(m)
От: rameel https://github.com/rsdn/CodeJam
Дата: 25.02.10 13:45
Оценка: -1 :)))
Здравствуйте, gyraboo, Вы писали:

G>Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом.


Ага, а в виме после студии как на балу любителей садо-мазо

... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Re: Про vi(m)
От: Gorbatich  
Дата: 14.04.12 12:54
Оценка: -1 :)))
Здравствуйте, Mamut, Вы писали:


M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?

M>И тут вдруг появляется засада. Их всех приведенных примеров все упирается в то, что иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы. А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах. Иногда — да, где-то не там и не так, как хотелось бы. Но с другой стороны vi(m) не позволит сделать вот такой
Автор: Пацак
Дата: 24.02.10
рефакторинг.

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия

Vim это убогий старый редактор черного цвета. Может быть лет 20 назад он был крут но сейчас это каменный век. Бообще все должно делаться мышкой, максимум есть необходимость использовать CRTL C, CTRL V. А там и этого есть зато есть куча гамна, которая неизвестно как работает.
Re: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 11:16
Оценка: 4 (3)
Здравствуйте, Mamut, Вы писали:

M>А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах.

M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?

Естественно, существуют. Ты же не думаешь, что древний холивор «vi vs. emacs» основывается на том, что один умеет, а второй нет? Возможности этих двух примерно равны, а вот подходы очень разные. Разница-то и есть в том, где работать удобнее
M>иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы.

Если же сравнивать vi и (вставить IDE сюда), то быстро обнаружится, что
M>vi(m) не позволит сделать вот такой
Автор: Пацак
Дата: 24.02.10
никакой рефакторинг

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



Считая флейм «текстовый редактор vs IDE» закрытым, перейдем к собственно vi. Какие преимущества дает модальный редактор? Только те, которые ты назвал — «позволяет нажать чуть меньше клавиш». Например, в vi команда «удалить 10 символов» звучит как «10x», а в Emacs — «M-1 0 C-d», что по сути то же самое, только без модификаторов. Это, и еще то, что в Emacs можно запускать кучу программ и работать с ними примерно так же, как с текстовыми буферами, и составляет основную разницу между ними.

Теперь о редакторах в IDE на примере MSVS. Они оптимизированы для работы с кодом, например, команды вроде C-k C-c — «закомментировать строку или выделение». Vi особенно полезен, когда нужно просто жонглировать с текстом, преобразовывая его из одной формы в другую. Например, твои действия, если тебе нужно набрать следующее:

trusted_addresses = [
    "192.168.42.1",
    "192.168.42.17",
    "192.168.42.18",
    "192.168.42.19",
    "192.168.42.20",
    "192.168.42.21",
    "192.168.42.22",
    "192.168.42.23",
    "192.168.42.24",
    "192.168.42.25",
    "192.168.42.26",
    "192.168.42.27",
    "192.168.42.28",
    "192.168.42.29",
    "192.168.42.30",
    "192.168.42.31",
    "127.0.0.1",
]
?

Что в 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% — менее быстро и удобно :-). Как-то так.
До последнего не верил в пирамиду Лебедева.
Re: Про vi(m)
От: dr.Chaos Россия Украшения HandMade
Дата: 26.02.10 10:35
Оценка: 3 (2) +1
Здравствуйте, Mamut, Вы писали:

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


Ту наверно дело не в том, что кто-то умеет, а то к какому стилю работы тот или иной редактор приучает. Vim с первых движений приучает работать с текстом его логическими элементами (слова, строки, предложения, блоки и т.п.) и отучает от использования «Этих смешных стрелочек» ©, перемещение по тексту стрелками — это долго, намного удобнее это делать поиском (/bla-bla), следующее слово w, перейти к символу в строке f<symbol>, метки. Когда усваиваешь первое начинаешь мыслить не «стрелка вправо, стрелка влево» (пусть это и общепринятые стандарты), заменить слово, заменить блок, преобразовать блок и т.п. и стараешься делать как можно больше операций с блоками и это, блин, удобно. Т.е. человек работающий в виме не просто может, он будет использовать эти операции, причём постоянно, в других же редакторах (NEdit, студия и т.п.) это будет использовать только тот, кто выучил шоткаты (которые запомнить немного сложнее вимовских). Допустим я уверен, что jazzer в Nedit или CyberAx в студии по скорости работы с текстом программы ни в чём не уступят допустим мне или любому другому вимисту, но время потраченное на изучение и привыкание к шоткатам будет вполне сравнимо для всех случаев. И мы все будем чувствовать себя инвалидами при переходе к новым шоткатам (мышечная память забить новыми сочетаниями надо не мало времени).

Вимисты очень быстро привыкают работать с более крупными элементами текста программы. Другие радакторы способствуют этому значительно меньше.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[5]: Про vi(m)
От: haba_haba_haba Россия  
Дата: 25.02.10 14:34
Оценка: 2 (2) -1
Здравствуйте, 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')

Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 13:29
Оценка: +3
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия

AD>Например так:

AD>http://www.youtube.com/watch?v=gsMjQP4yxYw

Любой вмняемый редактор с шаблонами/сниппетами и автодополнением тэгов (или + zen coding)

AD>http://vimeo.com/3535418


Дада. TextMate-style snippets for vim.


Ничего такого, от чего можно было бы воскликнуть вуауау Следующий


dmitriid.comGitHubLinkedIn
Re[5]: Про vi(m)
От: Sheridan Россия  
Дата: 25.02.10 17:02
Оценка: +3
Приветствую, пыщьх, вы писали:

п> Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?


Ноутбучные клавиатуры. Доступ исключительно через шорткат Fn+клавиша
avalon 1.0rc3 rev 315, zlib 1.2.3
build date: 15.02.2010 00:26:03 MSK +03:00
Qt 4.6.1
Matrix has you...
Re: Про vi(m)
От: frogkiller Россия  
Дата: 25.02.10 09:51
Оценка: 2 (1) +1
Здравствуйте, Mamut, Вы писали:

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?


При (почти) всей этой функциональности vim прекрасно работает в консоли через кучу терминалов и с вероятностью 95% "из коробки" живёт в разных мелких девайсов типа домашних роутеров, не говоря уже о больших серверах.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re: Про vi(m)
От: gyraboo  
Дата: 25.02.10 12:32
Оценка: 2 (1) +1
Здравствуйте, Mamut, Вы писали:

M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?


M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


Тут дело в принципе, который можно понять только изучив Вим и начав с ним реально работать.
Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом.
В Виме у тебя на кончиках пальцев сосредоточена истинная мощь. Мощь — это возможность выполнять работу быстрее, меньше отвлекаться на тупое кнопконажимательство.
Вот пример навскидку:
Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:

public void MyFunction(Integer param1,
                       Integer param2,
                       String s) {
...
}


В обычном редакторе:
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 "

public void MyFunction(
                       Integer param1,
                       Integer param2,
                       Integer param3,
                       Integer param4,
                       Integer param5,
                       Integer param6,
                       String s
                      ) {
...
}
Re[7]: Про vi(m)
От: frogkiller Россия  
Дата: 25.02.10 14:58
Оценка: 2 (2)
Здравствуйте, 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 и т.п.


Это поначалу... а так — человеческий мозг — штука хитрая, и не такие вещи может освоить
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[7]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 18:23
Оценка: 2 (2)
Здравствуйте, yuriylsh, Вы писали:

__>>

__>>insert into my_table(id, name) values (1, 'Phillip Morris 1')
__>>...
__>>insert into my_table(id, name) values (100, 'Phillip Morris 100')


Y>Я для такого в VS использую F# interactive. Т.е. Ctrl+Alt+F (если еще не открыт, а у меня он всегда откры), а дальше

Y>
List.iter (fun (i: int) -> Console.WriteLine("insert into my_table(id, name) values ({0}, 'Phillip Morris {0}')", i)) [1..100]


С тем же успехом можно использовать обычный zsh. Super+~, сверху выезжает окно терминала, а дальше
for i ({1..10}) echo "INSERT INTO my_table(id, name) VALUES ($i, 'Phillip Morris $i')"

Или {01..10}, чтобы с ведущими нулями.
До последнего не верил в пирамиду Лебедева.
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 14:38
Оценка: 1 (1) +1
__>Например так:
__>

__>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')



чувствую, пока дойдешь до выучинвания таких вещей, проще один раз написать что-нить типа for i=1 to 100 и т.п.


dmitriid.comGitHubLinkedIn
Re: Про vi(m)
От: vladimir.vladimirovich США  
Дата: 26.02.10 01:50
Оценка: 1 (1) +1
Здравствуйте, Mamut, Вы писали:

M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?


Например vim умеет не глючить с регэкспами, в отличии от той же студии.

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

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

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

PS: Ну и vim умеет быть встроенным редактором студии, а вот студия не умеет быть встроенным редактором vim-a
Re: Про vi(m)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 27.02.10 12:08
Оценка: 1 (1) +1
Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов.
Хотя именно как редактор VIM великолепен
Re[4]: Про vi(m)
От: пыщьх http://rsdn_user.livejournal.com
Дата: 25.02.10 14:18
Оценка: +1 -1
Здравствуйте, gyraboo, Вы писали:


G>Вот расшифровка комбинации:

G>$ — идем в конец строки
G>v — переход в режим выделения
G>i — говорим Виму что мы выделяем ВНУТРИ некоего диапазона (я запоминаю по мнемо-слову "inner" или "inside"). Если нажать a ("around" или "all"), то выделение произойдет вместе с окружающиими символами
G>( — а это то внутри чего мы выделяем (можно нажать любой парный символ, заданный в конфиге Вима; если нажать w — то выделится слово (буквы) внутри которого курсов, если W — то слово включая спец-символы)

А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?
Запретное обсуждение модерирования RSDN:
http://rsdn-user.livejournal.com/652.html
Re[7]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 18:10
Оценка: +2
Здравствуйте, IID, Вы писали:

IID>AFAIK там posix регекспы, не PCRE


POSIX в продуктах Майкрософта? Смешно. В .NET они своеобразные, но мощные. А вот в MSVS тоже своеобразные, но убогие.
До последнего не верил в пирамиду Лебедева.
Re[2]: Про vi(m)
От: jazzer Россия Skype: enerjazzer
Дата: 26.02.10 08:39
Оценка: +2
Здравствуйте, frogkiller, Вы писали:

F>Здравствуйте, Mamut, Вы писали:


M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?


F>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров


NEdit это умеет, более того, он это умеет делать с прямоугольным выделением, в отличие от vi, который на прямоугольное выделение чихал и все будет делать по всем строкам.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[9]: Про vi(m)
От: dr.Chaos Россия Украшения HandMade
Дата: 10.04.12 14:04
Оценка: +1 :)
Здравствуйте, Mamut, Вы писали:

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


Можешь не читать . Ты же гнусный троль всё равно умеешь пользовать vim и научился тому что тебе надо . С тем, что у vim-а порог вхождения повыше никто не спорит, но если его надо преодолеть reference это вполне адекватный и нужный документ. Его ведь можно не штудировать, а в диагональ прочесть.

А жизнь комфортной делает приятная компания и .
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[3]: Про vi(m)
От: frogkiller Россия  
Дата: 25.02.10 12:52
Оценка: 2 (1)
Здравствуйте, 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
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[3]: Про vi(m)
От: rameel https://github.com/rsdn/CodeJam
Дата: 25.02.10 13:47
Оценка: 2 (1)
Здравствуйте, rameel, Вы писали:

Поправка, Ctrl-W-W-X

Чукча не читатель, чукча — писатель
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Re[5]: Про vi(m)
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 05.04.12 17:07
Оценка: 2 (1)
Здравствуйте, Cyberax, Вы писали:

DV>>XRefactory плохо работает?

C>Ага. Тем более, что он умер. Сейчас рулит clang: http://blogs.gnome.org/jessevdk/2011/09/10/gedit-clang-plugin-progress/

Оказывается, уже и для Вима плагин есть: clang complete.
Ce n'est que pour vous dire ce que je vous dis.
Re[3]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 14:00
Оценка: 1 (1)
Здравствуйте, 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).
До последнего не верил в пирамиду Лебедева.
Re[5]: Про vi(m)
От: Privalov  
Дата: 25.02.10 14:37
Оценка: 1 (1)
Здравствуйте, Mamut, Вы писали:

M>И сколько времени уходит на запоминание этого?


У меня — много. Я бы даже сказал — до фига. При этом с предком вот этого редактора я разобрался как-то сразу. У него там тоже система команд, конфиги всякие, но, в отличие от vim, я начал с ним работать практически с ходу. Правда, с тех пор я его основательно забыл, а этот, по ссылке, скачивать не буду, бо платный. Останусь пока на notepad++, а может, nedit попробую. А еще может быть, поставлю снова vim, под влиянием, и попытаюсь опять... Но это последняя попытка будет.
Re[3]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 15:26
Оценка: 1 (1)
trusted_addresses = [
    "192.168.42.1",
    "192.168.42.17",
    "192.168.42.18",
M>скип
    "192.168.42.30",
    "192.168.42.31",
    "127.0.0.1",
]

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>можно по-русски? :)


Было:
    MD_Update(&m,buf,j); // purify complains

Стало:
    /*
     * Don’t add uninitialised data.
    MD_Update(&m,buf,j); // purify complains
     */


RO>>Да хотя бы :sort — в редакторе MSVS это есть?

M>эээ, что?

Выделил строчки, сказал :sort, оно их упорядочило.

RO>>В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно :-). Как-то так.

M>Пока что никем это не доказано :)

Мы в КСВ, разве здесь нужно доказывать и аргументировать?!
До последнего не верил в пирамиду Лебедева.
Re[5]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 15:56
Оценка: 1 (1)
Здравствуйте, 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

:-)
До последнего не верил в пирамиду Лебедева.
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 13:36
Оценка: +1
M>>А все остальное — поиск, jumplists, регэкспы и т.п., оказывается, существуют и в других редакторах.
M>>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?

RO>Естественно, существуют. Ты же не думаешь, что древний холивор «vi vs. emacs» основывается на том, что один умеет, а второй нет? Возможности этих двух примерно равны, а вот подходы очень разные. Разница-то и есть в том, где работать удобнее

M>>иногда vi(m) позволяет нажать чуть меньше клавиш, чем другие редакторы.

RO>Если же сравнивать vi и (вставить IDE сюда), то быстро обнаружится, что

M>>vi(m) не позволит сделать вот такой
Автор: Пацак
Дата: 24.02.10
никакой рефакторинг

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>
RO>trusted_addresses = [
RO>    "192.168.42.1",
скип
RO>    "192.168.42.30",
RO>    "192.168.42.31",
RO>    "127.0.0.1",
RO>]
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% — менее быстро и удобно . Как-то так.


Пока что никем это не доказано


dmitriid.comGitHubLinkedIn
Re[3]: Про vi(m)
От: gyraboo  
Дата: 25.02.10 14:05
Оценка: +1
Здравствуйте, 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").
Вроде бы мелочь, экономится всего одно лишнее нажатие, но такие мелочи и дают ощущение свободы и мощи при работе в Виме, особенно когда всё это усаживается в подкорку
и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.
Re[4]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 14:09
Оценка: -1
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_О


dmitriid.comGitHubLinkedIn
Re[3]: Про vi(m)
От: landerhigh Пират  
Дата: 25.02.10 14:39
Оценка: :)
Здравствуйте, rameel, Вы писали:


R>Ага, а в виме после студии как на балу любителей садо-мазо

Какой у некоторых колоритный жизненный опыт
www.blinnov.com
Re[4]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 15:49
Оценка: -1
Здравствуйте, Roman Odaisky, Вы писали:

RO>
RO>trusted_addresses = [
RO>    "192.168.42.1",
RO>    "192.168.42.17",
RO>    "192.168.42.18",
M>>скип
RO>    "192.168.42.30",
RO>    "192.168.42.31",
RO>    "127.0.0.1",
RO>]
RO>

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>
RO>    MD_Update(&m,buf,j); // purify complains
RO>

RO>Стало:
RO>
RO>    /*
RO>     * Don’t add uninitialised data.
RO>    MD_Update(&m,buf,j); // purify complains
RO>     */
RO>



Банальный comment selection или какон там wrap in comments? Тююю, а я-то думал

RO>>>Да хотя бы :sort — в редакторе MSVS это есть?

M>>эээ, что?

RO>Выделил строчки, сказал :sort, оно их упорядочило.


эээ. зачем? 0_О

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

RO>>>В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно . Как-то так.

M>>Пока что никем это не доказано

RO>Мы в КСВ, разве здесь нужно доказывать и аргументировать?!




dmitriid.comGitHubLinkedIn
Re[6]: Про vi(m)
От: Antikrot  
Дата: 25.02.10 17:23
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

п>> Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?

S>Ноутбучные клавиатуры. Доступ исключительно через шорткат Fn+клавиша
ну допустим у меня на ноуте эти кнопки есть. но вертикально! сверху вниз — home — pgup — pgdn — end. во где пальцы ломать.
Re: Про vi(m)
От: DenisCh Россия  
Дата: 25.02.10 17:38
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?


Они не умеют бмкать и всё портить...
... << RSDN@Home 1.2.0 alpha rev. 741>>
Re[2]: Про vi(m)
От: jazzer Россия Skype: enerjazzer
Дата: 26.02.10 08:56
Оценка: +1
Здравствуйте, vladimir.vladimirovich, Вы писали:

VV>PS: Ну и vim умеет быть встроенным редактором студии, а вот студия не умеет быть встроенным редактором vim-a

Имхо, это уже достоинство Студии, а не вима
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Про vi(m)
От: landerhigh Пират  
Дата: 26.02.10 11:49
Оценка: -1
Здравствуйте, dmitry_npi, Вы писали:

_>1. Ставим курсор в выделенное место (причем мышкой, так быстрее!)

Практически в бесконечное число раз медленнее.
www.blinnov.com
Re[7]: Про vi(m)
От: Eugeny__ Украина  
Дата: 26.02.10 15:38
Оценка: +1
Здравствуйте, Mamut, Вы писали:


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.
Re[3]: Про vi(m)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 27.02.10 14:28
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

Давай, было бы интересно!
Re[2]: Про vi(m)
От: Tanker  
Дата: 05.04.12 10:21
Оценка: -1
Здравствуйте, genre, Вы писали:

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


Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.
The animals went in two by two, hurrah, hurrah...
Re[2]: Про vi(m)
От: Dair Россия  
Дата: 05.04.12 18:10
Оценка: :)
У меня часто в коде, набранном в Студии/Xcode встречаются ошибочные буквосочетания :wq !!! :-D
Re[2]: Про vi(m)
От: GarryIV  
Дата: 06.04.12 09:35
Оценка: :)
Здравствуйте, frogkiller, Вы писали:

M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?


F>При (почти) всей этой функциональности vim прекрасно работает в консоли через кучу терминалов и с вероятностью 95% "из коробки" живёт в разных мелких девайсов типа домашних роутеров, не говоря уже о больших серверах.


Шоб он здох, кстати.
WBR, Igor Evgrafov
Re[5]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 06.04.12 12:15
Оценка: :)
Здравствуйте, Eugeny__, Вы писали:

E__>Он умеет?


Так он и не претендует. А вот использовать один редактор для всего (и код, и конфиги, и просто заметки) очень удобно.

К тому же, некоторые языки требуют значительной поддержки со стороны IDE, а для некоторых это не так и важно. По агентурным донесениям, желающих каждый раз вручную набирать
doSomething(new Runnable() {
    @Override
    public void run() {
        doSomethingElse(someArguments);
    }
});
чуть меньше, чем doSomething(лямбда{doSomethingElse(someArguments)}).
До последнего не верил в пирамиду Лебедева.
Re: Про vi(m)
От: monax  
Дата: 10.04.12 20:25
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>Основной посыл про vi(m) выглядит так:


Mamut, отстань от вима. То, что его не продаёт любимая тобой яблочная компания, ещё не делает его плохим софтом. Ты религиозный фанатик похлеще вимеров и имаксеров, только защищаешь маки и ифоны. А от вима отстань, он сразу видит, что ты к нему с недобрыми намерениями, а так, потроллить, вот и не станет он с тобой работать.
Re[4]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 15.04.12 11:36
Оценка: +1
M>>Это все пустые слова и демагогия. Даже в этом топике практически никто не смог привести ни одного внятного примера повышения производительности в виме за исключением каких0то абсолютно маргинальных и редко используемых примеров

RO>Один внятный пример ничего не даст, ты парируешь «но ведь этот один внятный пример встречается раз в год» и будешь прав. Vim просто универсальный текстовый редактор, не оптимизированный ни под что определенное. У него много мелких полезных вещей, и никогда не знаешь наперед, что из них может понадобиться, но стоит только столкнуться с какой-нибудь нетривиальной задачей, и окажется, что ее можно выполнить легко и просто. IDE очень хорошо справляется с рефакторингом, лучше, чем любой текстовый редактор, включая Vim, но рефакторинг по определению работает только с определенными заранее заданными ситуациями — так что IDE делает что-то очень хорошо, а что-то так себе, в то же время как хороший текстовый редактор делает всё на одном уровне.


Хороший текстовый редактр делает все на одном уровне — плохом Потому что код — это не совсем текст. Это весьма структурированный и контекстно-зависимый текст. В итоге мне тут рассказывают сказки про глобальный Find/Replace, о том, что нажать a + начать редактировать — это быстрее, чем нажать Right + начать редактировать и т.п.


RO>Кстати, ничто не мешает сделать IDE, которая использовала бы Vim как текстовый редактор — прикручивать не рефакторинг к Vim, а Vim к инструменту, который умеет рефакторинг и прочее. Некоторые даже пытались, но до конца, похоже, не довели.


RO>А пример всё же приведу, не далее как пару дней назад потребовался.


RO>IDE тут не поможет никак, а Vim справился без проблем.


вот честно — сколько лет надо изучать вим, чтобы выполнить это "легко и просто". Не говоря о том, что, а так понимаю, надо было внести названия директорий в списко преводов, и чисто повезло, что порядок директорий совпал с порядком переводов.


dmitriid.comGitHubLinkedIn
Re: Про vi(m)
От: fddima  
Дата: 25.02.10 09:36
Оценка:
Здравствуйте, Mamut, Вы писали:

Эх, ну что же ты, на серьезный вброс на вентилятор как-то вроде и не тянет.
Re: Про vi(m)
От: frogkiller Россия  
Дата: 25.02.10 09:42
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?


Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 09:46
Оценка:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?
F>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров

Ч0рт. Надо было еще попросиь приводить примеры и юзкейс.

Что такое произвольный набор внешних фильтров, что такое внешние фильтры, и зачем это нужно?


dmitriid.comGitHubLinkedIn
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 09:52
Оценка:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом?

F>При (почти) всей этой функциональности vim прекрасно работает в консоли через кучу терминалов и с вероятностью 95% "из коробки" живёт в разных мелких девайсов типа домашних роутеров, не говоря уже о больших серверах.


Принимается. Это — действительно так


dmitriid.comGitHubLinkedIn
Re: Про vi(m)
От: andrey.desman  
Дата: 25.02.10 09:54
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


Например так:
http://www.youtube.com/watch?v=gsMjQP4yxYw
http://vimeo.com/3535418
Re[2]: Про vi(m)
От: Codechanger Россия  
Дата: 25.02.10 10:44
Оценка:
Еще такой вопрос. Тут в соседнем топике всплывал вопрос про безальтернативность сами знаете какой IDE. Так вот, а в Линуксе-то есть альтернатива vim, сопоставимая с ним по возможностям. Потому как альтернатива той самой IDE есть(в виде того же vim под Windows).
Re: Про vi(m)
От: DOOM Россия  
Дата: 25.02.10 10:53
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


В студии нельзя параллельно набирать статью в TeX'е, писать программу на С и скрипт на баше.
А еще, помню по времена 2003-й студии народ писался кипятком от ее фолдинга (совершенно неуправляемого, насколько я помню). В vim'е как бе всегда было...

И в vim'е очень удобно грепнуть по 10-ку файлов, а потом cp, cn и т.п. прыгать по результатам поиска (помнится в студии тоже через гуй был какой-то поиск по содержимому файлов, но не такой прикольный).

ну и т.д. и т.п. много фишечек...
Re[2]: Про vi(m)
От: IID Россия  
Дата: 25.02.10 11:11
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>И в vim'е очень удобно грепнуть по 10-ку файлов, а потом cp, cn и т.п. прыгать по результатам поиска (помнится в студии тоже через гуй был какой-то поиск по содержимому файлов, но не такой прикольный).


в студии CTRL+SHIFT+F. А что значит выделенное ?
kalsarikännit
Re[3]: Про vi(m)
От: DOOM Россия  
Дата: 25.02.10 11:17
Оценка:
Здравствуйте, IID, Вы писали:

IID>в студии CTRL+SHIFT+F. А что значит выделенное ?

Ну — ты возможности грепа представляешь? В студии, помнится, разве что метасимволы можно было задавать.
Re: Про vi(m)
От: haba_haba_haba Россия  
Дата: 25.02.10 11:57
Оценка:
Здравствуйте, Mamut, Вы писали:


M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


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


Я больше не буду создавать таких тем!


В виме на это потребуется 5+37+1 = 43 нажатия клавиш.
15000oЯ больше не буду создавать таких тем!<ESC>

В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать.
Re[2]: Про vi(m)
От: Eugeny__ Украина  
Дата: 25.02.10 12:26
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:


RO>В 80% случаев vi позволяет работать просто чуточку быстрее и удобнее, в 15% — намного быстрее и удобнее, в 5% — менее быстро и удобно . Как-то так.


Итого, получается, что vi удобен для редактирования конфигов, написания несложных скриптов и пр. Просто в соседней ветке активно обсуждается его удобство именно при написании программ на с/c++, а это уже совсем другое. Там редактор, как таковой, далеко не главное. Там, все-таки, желательно иметь IDE.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[3]: Про vi(m)
От: landerhigh Пират  
Дата: 25.02.10 12:31
Оценка:
Здравствуйте, Mamut, Вы писали:

F>>Ну как бы классическое: выделить текст и пропустить через произвольный набор внешних фильтров

M>Ч0рт. Надо было еще попросиь приводить примеры и юзкейс.
M>Что такое произвольный набор внешних фильтров, что такое внешние фильтры, и зачем это нужно?
sort, grep. You name it.

Приходится использовать довольно часто.
www.blinnov.com
Re[2]: Про vi(m)
От: landerhigh Пират  
Дата: 25.02.10 12:52
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом.


Воот. Именно так.
www.blinnov.com
Re[3]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 13:02
Оценка:
Здравствуйте, Eugeny__, Вы писали:

E__>Итого, получается, что vi удобен для редактирования конфигов, написания несложных скриптов и пр. Просто в соседней ветке активно обсуждается его удобство именно при написании программ на с/c++, а это уже совсем другое. Там редактор, как таковой, далеко не главное. Там, все-таки, желательно иметь IDE.


С автодополнялкой, которая проберется через шаблонные дебри? Возможно. Хотя я разрабатывал одну программу на C++ сначала в Eclipse, потом в Qt Creator, а потом и вовсе вносил мелкие изменения в vi и было вполне хорошо и удобно. Хотя программа и не особенно велика, всего лишь несколько тысяч строчек.
До последнего не верил в пирамиду Лебедева.
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 13:31
Оценка:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия

DOO>В студии нельзя параллельно набирать статью в TeX'е, писать программу на С и скрипт на баше.


Но можно, например, в TexMate/Eclipse/NetBeans и т.п. Не катит

DOO>А еще, помню по времена 2003-й студии народ писался кипятком от ее фолдинга (совершенно неуправляемого, насколько я помню). В vim'е как бе всегда было...


Ну а сейчас нет только у особо ленивых редакторов Не катит


DOO>И в vim'е очень удобно грепнуть по 10-ку файлов, а потом cp, cn и т.п. прыгать по результатам поиска (помнится в студии тоже через гуй был какой-то поиск по содержимому файлов, но не такой прикольный).



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

DOO>ну и т.д. и т.п. много фишечек...


Не вижу никаки и т.д. и т.п. Где те самые killer features, о которых другие не могут даже подумать?


dmitriid.comGitHubLinkedIn
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 13:37
Оценка:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия

__>Вот ведь неугомонный.

__>На порядок, так на порядок:
__>Напиши мне в студии 15000 строк вида:


__>

__>Я больше не буду создавать таких тем!


__>В виме на это потребуется 5+37+1 = 43 нажатия клавиш.

__>15000oЯ больше не буду создавать таких тем!<ESC>

__>В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать.

__>


сферовакуумные примеры меня не интересуют. пока что все вопли про крутость vi(m)'а периодически сводятся к :
— а я могу удалить 10 символов двумя нажатиями клавиш (a.k.a. сферовакуум)
— а я могу использовать регэкспы для замены чего-то (как-будто только в vim'е поддерживаются регекспы)

за очень редким количеством других примеров


dmitriid.comGitHubLinkedIn
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 13:43
Оценка:
G>Тут дело в принципе, который можно понять только изучив Вим и начав с ним реально работать.
G>Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом.
G>В Виме у тебя на кончиках пальцев сосредоточена истинная мощь. Мощь — это возможность выполнять работу быстрее, меньше отвлекаться на тупое кнопконажимательство.
G>Вот пример навскидку:
G>Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:

G>
G>public void MyFunction(Integer param1,
G>                       Integer param2,
G>                       String s) {
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>
G>public void MyFunction(
G>                       Integer param1,
G>                       Integer param2,
G>                       Integer param3,
G>                       Integer param4,
G>                       Integer param5,
G>                       Integer param6,
G>                       String s
G>                      ) {
G>...
G>}
G>



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


dmitriid.comGitHubLinkedIn
Re[4]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 13:45
Оценка:
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



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


dmitriid.comGitHubLinkedIn
Re[2]: Про vi(m)
От: rameel https://github.com/rsdn/CodeJam
Дата: 25.02.10 13:45
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:


G>
G>public void MyFunction(Integer param1,
G>                       Integer param2,
G>                       String s) {
G>...
G>}
G>


Ctrl-W-W

G>Если форматирование будет более сложным, а количество параметров больше, то в обычном редакторе во-первых, количество нажатий будет расти, а во-вторых мы должны каждый раз индивидуально применять примитивные средства HOME, SHIFT и клавиши курсора для навигации по хитро-форматированному фрагменту кода.

G>А в Виме остаются все те же 4 нажатия и никакой лишней мыслительной деятельности независимо от того насколько вычурно и сложно отформатирован код

все те же Ctrl-W-W

G>(потому что указанная комбинация сработает в любом случае, главное чтобы курсор оказался внутри скобок). А если нужно выделить текст внутри других парных символов, скажем квадратных скобок или кавычек, то достаточно нажать $ v i "


Ctrl-W-W

G>
G>public void MyFunction(
G>                       Integer param1,
G>                       Integer param2,
G>                       Integer param3,
G>                       Integer param4,
G>                       Integer param5,
G>                       Integer param6,
G>                       String s
G>                      ) {
G>...
G>}
G>


Ctrl-W-W

Такое поведение в idea и студии с решарпером
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Re[4]: Про vi(m)
От: haba_haba_haba Россия  
Дата: 25.02.10 13:47
Оценка:
Здравствуйте, 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
Re[3]: Про vi(m)
От: haba_haba_haba Россия  
Дата: 25.02.10 14:05
Оценка:
Здравствуйте, 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ов для тестовой таблицы, и после небольшой доработки исполнить их на сервере.

Ах да, это ж сферовакуум.
Re[3]: Про vi(m)
От: March_rabbit  
Дата: 25.02.10 14:06
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, gyraboo, Вы писали:


G>>Работая в редакторе той же Студии после Вима — чувствуешь себя инвалидом.


L>Воот. Именно так.

после емакса, залезши пару раз в вим, именно так себя и почуствовал.
Re[5]: Про vi(m)
От: frogkiller Россия  
Дата: 25.02.10 14:10
Оценка:
Здравствуйте, 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

В реальности у меня значительно более сложные расчёты, встроенными средствами не всегда удаётся обойтись.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[4]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 14:14
Оценка:
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>и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.

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


dmitriid.comGitHubLinkedIn
Re[4]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 14:15
Оценка:
M>>сферовакуумные примеры меня не интересуют. пока что все вопли про крутость vi(m)'а периодически сводятся к :
M>>- а я могу удалить 10 символов двумя нажатиями клавиш (a.k.a. сферовакуум)
M>>- а я могу использовать регэкспы для замены чего-то (как-будто только в vim'е поддерживаются регекспы)

__>Что, больше чем на порядок?


__>ЗЫ

__> — а я могу сгенерировать таким образом кучу insertов для тестовой таблицы, и после небольшой доработки исполнить их на сервере.


Ключевой вопрос — какой доработки?

__>Ах да, это ж сферовакуум.


Нет, это пока не сферовакуум


dmitriid.comGitHubLinkedIn
Re[4]: Про vi(m)
От: Eugeny__ Украина  
Дата: 25.02.10 14:16
Оценка:
Здравствуйте, frogkiller, Вы писали:

[...]
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.
Re[4]: Про vi(m)
От: IID Россия  
Дата: 25.02.10 14:17
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, IID, Вы писали:


IID>>в студии CTRL+SHIFT+F. А что значит выделенное ?

DOO>Ну — ты возможности грепа представляешь?
Не очень. Юзал только в качестве поиска подстрок.

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

В студии можно юзать регекспы для поиска.
kalsarikännit
Re[5]: Про vi(m)
От: gyraboo  
Дата: 25.02.10 14:22
Оценка:
Здравствуйте, Mamut, Вы писали:

M>угу. и после этого мне говорят про интуитивность, легкозапоминаемость и то, чтто мозг загружать не надо? 0_О


Первое время когда изучаешь Вим, то снятся навязчивые кошмары на тему системы его команд. Потому что информации действительно много.
Но потом мозг переходит в режим когда ты ДУМАЕШЬ на языке этих команд. Многие из них очень легко запоминаются,
т.к. обычно представляют собой первую букву соответствующего слова.

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

[$] (идем в конец строки, легко запомнить, т.к. это символ в регэкспах) [v]isual mode [i]nside ["]
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 14:26
Оценка:
M>>угу. и после этого мне говорят про интуитивность, легкозапоминаемость и то, чтто мозг загружать не надо? 0_О

G>Первое время когда изучаешь Вим, то снятся навязчивые кошмары на тему системы его команд. Потому что информации действительно много.

G>Но потом мозг переходит в режим когда ты ДУМАЕШЬ на языке этих команд. Многие из них очень легко запоминаются,
G>т.к. обычно представляют собой первую букву соответствующего слова.

осталось узнать, сколько времени уходит на из изучение


dmitriid.comGitHubLinkedIn
Re[5]: Про vi(m)
От: gyraboo  
Дата: 25.02.10 14:30
Оценка:
Здравствуйте, Mamut, Вы писали:

G>>При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.


M>А следить за текущим контекстом не требует дополнительной концентрации внимания?


Нет, не требует. Привычка делать двойной Эскейп после выполнения каждой операции — и ты уже не следишь за контекстом.
Особенно эта привычка актуальна при терминальной работе, когда курсов не меняет свой вид в зависимости от режима )

M>извиняюсь, но это маразм

M>- i + начать набирать текст
M>против
M>- left + начать набирать текст

Не вижу маразма:
i — переход в режим вставки слева от курсора, a — справа от курсора


G>>но такие мелочи и дают ощущение свободы и мощи при работе в Виме, особенно когда всё это усаживается в подкорку

G>>и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.

M>И сколько времени уходит на запоминание этого?


Полгода на понимание принципов, а затем — постоянное изучение хелпа.
В этом плане Вим ограничивает круг своих поклонников лицами с соответствующим психотипом.
Если по жизни человек не любит штудировать, копаться в деталях, то Вим не для него.
Ничего плохого в этом нет, просто такой человек.
Re[5]: Про vi(m)
От: gyraboo  
Дата: 25.02.10 14:33
Оценка:
Здравствуйте, пыщьх, Вы писали:

G>>$ — идем в конец строки


П>А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?


Да без разницы, иногда END, иногда $, это зависит от того где палец ближе на данный момент.
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 14:35
Оценка:
G>>>При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.

M>>А следить за текущим контекстом не требует дополнительной концентрации внимания?


G>Нет, не требует. Привычка делать двойной Эскейп после выполнения каждой операции — и ты уже не следишь за контекстом.

G>Особенно эта привычка актуальна при терминальной работе, когда курсов не меняет свой вид в зависимости от режима )


мдее.. а еще других мазохистами называют

M>>извиняюсь, но это маразм

M>>- i + начать набирать текст
M>>против
M>>- left + начать набирать текст

G>Не вижу маразма:

G>i — переход в режим вставки слева от курсора, a — справа от курсора

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


G>>>но такие мелочи и дают ощущение свободы и мощи при работе в Виме, особенно когда всё это усаживается в подкорку

G>>>и перестаешь вспоминать какая команда что делает. Просто сидишь и работаешь в Виме, как многорукий Шива, не задумываясь.

M>>И сколько времени уходит на запоминание этого?


G>Полгода на понимание принципов, а затем — постоянное изучение хелпа.

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

мдее... я лучше что-нибудь другое поштудирую. Эрланг какой0нить или Хаскель...


dmitriid.comGitHubLinkedIn
Re[2]: Про vi(m)
От: nme  
Дата: 25.02.10 14:38
Оценка:
Здравствуйте, haba_haba_haba, Вы писали:

__>Вот ведь неугомонный.

__>На порядок, так на порядок:
__>Напиши мне в студии 15000 строк вида:


__>

__>Я больше не буду создавать таких тем!


__>В виме на это потребуется 5+37+1 = 43 нажатия клавиш.

__>15000oЯ больше не буду создавать таких тем!<ESC>

__>В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать.

__>

В VS2010 Block Selection на нужное количество строк, а потом 37 нажатий.
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Re[5]: Про vi(m)
От: alpha21264 СССР  
Дата: 25.02.10 15:28
Оценка:
Здравствуйте, пыщьх, Вы писали:

П>Здравствуйте, gyraboo, Вы писали:



G>>Вот расшифровка комбинации:

G>>$ — идем в конец строки
G>>v — переход в режим выделения
G>>i — говорим Виму что мы выделяем ВНУТРИ некоего диапазона (я запоминаю по мнемо-слову "inner" или "inside"). Если нажать a ("around" или "all"), то выделение произойдет вместе с окружающиими символами
G>>( — а это то внутри чего мы выделяем (можно нажать любой парный символ, заданный в конфиге Вима; если нажать w — то выделится слово (буквы) внутри которого курсов, если W — то слово включая спец-символы)

П>А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?


gvim умеет. Но это требует ПЕРЕНОСИТЬ РУКУ.

PS. vim не использую не осилил

Течёт вода Кубань-реки куда велят большевики.
Re[5]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 15:34
Оценка:
Здравствуйте, IID, Вы писали:

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

IID>В студии можно юзать регекспы для поиска.

Когда в последний раз использовал ее (MSVS 2005), они были очень своеобразны. Там уже научились (?<! и прочим перлоподобным полезностям? В самом дот-нете регулярные выражения весьма наворочены, а вот в MSVS?
До последнего не верил в пирамиду Лебедева.
Re[6]: Про vi(m)
От: gyraboo  
Дата: 25.02.10 15:34
Оценка:
Здравствуйте, alpha21264, Вы писали:

П>>А заметить на клавиатуре клавишу End религия не позволяет? Так и будем в 21м веке пользоваться шорткатами, предназначенными для древнего железа с кастрированными клавиатурами? Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?


A>gvim умеет. Но это требует ПЕРЕНОСИТЬ РУКУ.


Точно. Дао Вима не приветствует ПЕРЕНОСИТЬ РУКУ.
Чем меньше усилий, суеты и активности, тем легче удержаться в потоке энергии.
Re[8]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 25.02.10 15:49
Оценка:
Здравствуйте, frogkiller, Вы писали:

F>qX ... q — записать последовательность команд и сохранить её под именем X


Я уточню, сохранить ее в регистр X. Потом можно содержимое этого регистра вставить в буфер («"Xp»), отредактировать обычным способом, опять запихать в регистр и исполнить. Причем последовательность команд — это просто набор символов, которые набираются.
До последнего не верил в пирамиду Лебедева.
Re[2]: Про vi(m)
От: avpavlov  
Дата: 25.02.10 15:57
Оценка:
AD>Например так:
AD>http://www.youtube.com/watch?v=gsMjQP4yxYw

За Эклипс не скажу, но вот в ИДЕЕ это реализовано лучше (хотя я Вим не знаю и может автор видео просто не умеет его готовить).

Например, на с 37 по 45 секунду человек вводит имя класса, а потом повторно вводит его в комментариях — в ИДЕЕ в шаблоне можно указать переменную несколько раз, и при вводе она подставляется сразу во все подстановки.

Потом идёт создание переменной/геттера/сеттера — про это я вообще молчу, кошмар какой-то, чем тут гордится? в ИДЕЕ это просто переменная + Alt-Enter и выбрать что я хочу геттер, сеттер или геттер/сеттер.
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 25.02.10 16:00
Оценка:
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>


Ну разве что это


dmitriid.comGitHubLinkedIn
Re[6]: Про vi(m)
От: avpavlov  
Дата: 25.02.10 16:12
Оценка:
__>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')


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

в ОпенОфисе в итоге будет быстрее.
Re[2]: Про vi(m)
От: yuriylsh  
Дата: 25.02.10 16:38
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Здравствуйте, Mamut, Вы писали:


M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


AD>Например так:

AD>http://www.youtube.com/watch?v=gsMjQP4yxYw
AD>http://vimeo.com/3535418

А вот так (13.2 МВ)?
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.
Re[6]: Про vi(m)
От: IID Россия  
Дата: 25.02.10 16:51
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, IID, Вы писали:


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

IID>>В студии можно юзать регекспы для поиска.

RO>Когда в последний раз использовал ее (MSVS 2005), они были очень своеобразны. Там уже научились (?<! и прочим перлоподобным полезностям? В самом дот-нете регулярные выражения весьма наворочены, а вот в MSVS?


AFAIK там posix регекспы, не PCRE
kalsarikännit
Re[6]: Про vi(m)
От: yuriylsh  
Дата: 25.02.10 17:49
Оценка:
Здравствуйте, haba_haba_haba, Вы писали:

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')


Я для такого в VS использую F# interactive. Т.е. Ctrl+Alt+F (если еще не открыт, а у меня он всегда откры), а дальше
List.iter (fun (i: int) -> Console.WriteLine("insert into my_table(id, name) values ({0}, 'Phillip Morris {0}')", i)) [1..100]
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.
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 26.02.10 08:30
Оценка:
M>>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?
VV>Например vim умеет не глючить с регэкспами, в отличии от той же студии.

Это я не знаю Обычно с регэкспами глючу я, а потом только — тот инструмент, который с ними работает

VV>Например vim гораздо легче студии, а потому если нужно подправить один файлик там, один файлик сям — является отличным вариантом.


Согласен

VV>Например vim умеет банальную подсветку к языкам, про которые студия не знает.


Только еще надо знать, как эту подсветку туда вставлять Я, например, не имею ни малейшего представления Поэтому беру в руки какой-нить texmate/netbeans...

VV>А в целом после освоения — это очень удобный редактор, который дополнит ту же студию.

VV>PS: Ну и vim умеет быть встроенным редактором студии, а вот студия не умеет быть встроенным редактором vim-a

согласен


dmitriid.comGitHubLinkedIn
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 26.02.10 08:36
Оценка:
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 Два тыка мышкой


dmitriid.comGitHubLinkedIn
Re[2]: Про vi(m)
От: jazzer Россия Skype: enerjazzer
Дата: 26.02.10 08:56
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:


Практически во всех современных редакторах есть выделение парных скобок за одно нажатие.
Включая угловые скобки и кавычки (это уже про NEdit, за студию не скажу)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Про vi(m)
От: dmitry_npi Россия  
Дата: 26.02.10 10:58
Оценка:
Здравствуйте, gyraboo, Вы писали:
G>Вот пример навскидку:
G>Сколько нажатий нужно чтобы удалить/вырезать весь текст внутри скобок:

G>
G>public void MyFunction(Integer param1,
G>                       Integer param2,
G>                       String s) { | <--- курсор сюда
G>...
G>}
G>


G>В обычном редакторе:

G>END CTRL+LEFT CTRL+LEFT SHIFT+DOWN SHIFT+DOWN SHIFT+END LEFT LEFT LEFT
G>итого 8 нажатий

1. Ставим курсор в выделенное место (причем мышкой, так быстрее!)
2. SHIFT+CTRL+]
3. Заново ставим скобки: {, ENTER, }

Итого один клик и четыре нажатия.
Атмосферная музыка — www.aventuel.net
Re[8]: Про vi(m)
От: IID Россия  
Дата: 26.02.10 11:48
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>POSIX в продуктах Майкрософта? Смешно.


Ничего смешного. Позикс-подсистема раньше вообще была встроенной частью винды, наряду с Win32 и OS/2 подсистемами. Win32 ничем, формально, не "роднее" винде чем POSIX. "Родное" для винды это Native API. Просто Win32 стала популярной, а POSIX как был, так и остался уделом гиков
kalsarikännit
Re[9]: Про vi(m)
От: DOOM Россия  
Дата: 26.02.10 12:54
Оценка:
Здравствуйте, IID, Вы писали:

IID>Здравствуйте, Roman Odaisky, Вы писали:


RO>>POSIX в продуктах Майкрософта? Смешно.


IID>Ничего смешного. Позикс-подсистема раньше вообще была встроенной частью винды,

Была? Я что-то пропустил?

IID>Win32 ничем, формально, не "роднее" винде чем POSIX.

Только окошек без Win32 не будет
Re[10]: Про vi(m)
От: IID Россия  
Дата: 26.02.10 15:09
Оценка:
Здравствуйте, 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 подсистем не зависит. Рисуй сколько хочешь. Только оно недокументированное всё, на этом уровне
kalsarikännit
Re[5]: Про vi(m)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 27.02.10 12:21
Оценка:
Здравствуйте, пыщьх, Вы писали:

П> Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?

На моем MacBook Pro их нет. Даже через Fn. При этом клавиатура потрясающе удобная, она просто другая
Re[2]: Про vi(m)
От: landerhigh Пират  
Дата: 27.02.10 13:14
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов.


Omnicompletions пробовал?
www.blinnov.com
Re[2]: Про vi(m)
От: Cyberax Марс  
Дата: 27.02.10 13:17
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов.

Я прикручивал туда поддержку автодополнения от XRefactory. Докрутил до того, что оно начало работать, но потом бросил у ушёл обратно в Студию.

Могу поискать код и выложить.
Sapienti sat!
Re[3]: Про vi(m)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 27.02.10 14:29
Оценка:
Здравствуйте, landerhigh, Вы писали:

Пробовал, базируется на том же ctags
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 01.03.10 14:57
Оценка:
П>> Или вы где-то видели клавиатуру без home/end/page up/page down/etc.?
KP>На моем MacBook Pro их нет. Даже через Fn. При этом клавиатура потрясающе удобная, она просто другая

Home = Cmd + Left
End = Cmd + Right

PgUp/PgDn = Fn + Up/Down(не везде, правда, работает, хотя и должно )


dmitriid.comGitHubLinkedIn
Re[7]: Про vi(m)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 01.03.10 15:14
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Home = Cmd + Left

M>End = Cmd + Right
M>PgUp/PgDn = Fn + Up/Down(не везде, правда, работает, хотя и должно )

Я бы сказал что приведенное тобой это просто некое соглашение, т.к. по моим ощущениям не все приложения реагируют на эти комбинации одинаково.
Re[8]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 01.03.10 15:26
Оценка:
M>>Home = Cmd + Left
M>>End = Cmd + Right
M>>PgUp/PgDn = Fn + Up/Down(не везде, правда, работает, хотя и должно )

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


Ну, на Home/End можно сказать, что реагируют 95% за исключнием TextMate А вот PgUp/PgDn — это увы


dmitriid.comGitHubLinkedIn
Re[3]: Про vi(m)
От: Denys V. Украина http://ua.linkedin.com/in/dvalchuk
Дата: 05.04.12 08:10
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, kaa.python, Вы писали:


KP>>Мне очень нравится VIM и то как в нем построена система редактирования текста. Но отсутствие нормально поддержки автодополнений для C++ (не надо рассказывать по ctags и прочее, я сам про них могу много его рассказать) делает его не очень подходящим для больших проектов.

C>Я прикручивал туда поддержку автодополнения от XRefactory. Докрутил до того, что оно начало работать, но потом бросил у ушёл обратно в Студию.

Почему ушли?
XRefactory плохо работает?
Недокрутили?
Не смогли привыкнуть к vim?

C>Могу поискать код и выложить.

был бы очень признателен.
С уважением Denys Valchuk

IMHO чем больше мнений тем оптимальней выбор варианта... :)
Re: Про vi(m)
От: genre Россия  
Дата: 05.04.12 10:01
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


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

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

ну и всякие "удалить текст между скобками" тоже не нужны. нужно refactor->change signature.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[3]: Про vi(m)
От: genre Россия  
Дата: 05.04.12 10:25
Оценка:
Здравствуйте, Tanker, Вы писали:

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


T>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.


можно юзкейс?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[2]: Про vi(m)
От: NiJazz Австралия  
Дата: 05.04.12 11:03
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Здравствуйте, Mamut, Вы писали:


M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия


Это SnipMate? Как это сделать? Табы не прокатывают.
Или другой плагин?
Умоляю!
Re: Про vi(m)
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 05.04.12 11:34
Оценка:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия

Командный режим работы хорошо проявляет себя при редактировании текста. А как известно, исходники чаще редактируют, чем пишут с нуля. Оперируя логическими блоками ("найти следующую открывающую скобку, удалить слово, поместить в буфе первые три символа следующего слова, удалить все до закрывающей скобки, вставить помещенное в буфер") позволяет быстро записать сложный макрос и затем применять его к тексту. Как правило в таких случаях случается огромный выигрыш во времени. Задачи вида "а теперь мы по всем исходникам ищем во-о-о-о-от такую конструкцию и меняем ее вот таким образом" решается очень быстро — первый раз мы выполняем это командами (причем можно использовать даже логику — вида "если то-то то делать одно, в противном случае другое") а затем просто нажимаем кнопочку "повторить для всех вхождений" и смотрим как вим перемалывает наши десять мегабайт исходников.

В принципе, в сферическом мире в вакууме, где код идеально организован и массовые правки архитектурно не нужны, все редакторы примерно одинаковые. Но на практике это, увы, не так. И местами вим может за пять минут выполнить задачу, которую в той же вижуалке стучать по клавишам целый день, да к тому же есть риск опечататься.
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 05.04.12 11:53
Оценка:
M>>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия

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


Именно. Поэтому, наверное, логичнее иметь интерактивный режим по умолчанию

EOH>Оперируя логическими блоками ("найти следующую открывающую скобку, удалить слово, поместить в буфе первые три символа следующего слова, удалить все до закрывающей скобки, вставить помещенное в буфер") позволяет быстро записать сложный макрос и затем применять его к тексту.


Что такое сложный макрос? Если он сложный, это значит, что применяется он редко. Например, описанная тобой последовательность действий в виде макроса не нужна даже даром. Потому что именно такая последовательность действий слишком специфична, чтобы быть полезной.

EOH>Как правило в таких случаях случается огромный выигрыш во времени. Задачи вида "а теперь мы по всем исходникам ищем во-о-о-о-от такую конструкцию и меняем ее вот таким образом" решается очень быстро — первый раз мы выполняем это командами (причем можно использовать даже логику — вида "если то-то то делать одно, в противном случае другое") а затем просто нажимаем кнопочку "повторить для всех вхождений" и смотрим как вим перемалывает наши десять мегабайт исходников.


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

Не говоря уже о том, что «воооот такая конструкция» вряд ли будет встречаться в коде много раз.


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


Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).


dmitriid.comGitHubLinkedIn
Re[3]: Про vi(m)
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 05.04.12 12:09
Оценка:
M>Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).

Я рассказываю исключительно про свое впечатление за последние пять лет плотной работы с VIM. В целом я уже более десяти лет активно использую Visual Studio, много лет использовал emacs, так что есть с чем сравнивать. Продавать вам VIM я не собираюсь, так что специально вспоминать и описывать здесь ситуации сложной замены, когда VIM экономил очень много времени, не буду — достаточно того, что я этими соображениями поделился.
Re[2]: Про vi(m)
От: B0FEE664  
Дата: 05.04.12 12:12
Оценка:
Здравствуйте, haba_haba_haba, Вы писали:

__>В студии посчитай сам. Если не использовать копирование — примерно 15000*(37+1). Или поменьше, если его использовать.

__>

Подсчитал, в VS2008 получилось поменьше: 39 + набивка самой строки = 77
И каждый день — без права на ошибку...
Re[2]: Про vi(m)
От: vpchelko  
Дата: 05.04.12 12:16
Оценка:
Здравствуйте, gyraboo, Вы писали:
А мне одного хватает , тут мышка рядом пробежала, я только нажал delete
Сало Украине, Героям Сала
Re[4]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 05.04.12 12:19
Оценка:
M>>Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).

EOH>Я рассказываю исключительно про свое впечатление за последние пять лет плотной работы с VIM. В целом я уже более десяти лет активно использую Visual Studio, много лет использовал emacs, так что есть с чем сравнивать. Продавать вам VIM я не собираюсь, так что специально вспоминать и описывать здесь ситуации сложной замены, когда VIM экономил очень много времени, не буду — достаточно того, что я этими соображениями поделился.


Ну вот. Так — всегда. Никто не способен описать, что такого они делают, в чем vim рулит.ю Все заканчивается на «я дал представление»

Я ни в жизнь не позволю себе запускать автоматическое «сложное преобразование» на проекте какого-либо объема в случае, если это преобразовнаие основывается только лишь на «последовательности действий». Потому что это ничем не отличается от глобального Find Replace. Потому что даже рефакторинг, который основывается на гораздо большей информации, чем просто последовательность действий, иногда дает сбои.

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

Аналогично со «сложными макросами». Сложные макросы для манипуляции текста я перестал писать еще в 95-м ворде, потому что чем макрос сложнее, чем уже сфера его применения и тем он бесполезнее. В какой-то момент легче провести манипуляции заново, чем вспоминать, что именно делает сложный макрос, есть ли он вообще, и можно ли его применить в данной конкретной ситуации.

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


dmitriid.comGitHubLinkedIn
Re: Про vi(m)
От: vpchelko  
Дата: 05.04.12 12:24
Оценка:
Здравствуйте, Mamut, Вы писали:

Разве в vim есть поддержка мышки?
Сало Украине, Героям Сала
Re[5]: Про vi(m)
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 05.04.12 12:36
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Аналогично со «сложными макросами». Сложные макросы для манипуляции текста я перестал писать еще в 95-м ворде, потому что чем макрос сложнее, чем уже сфера его применения и тем он бесполезнее. В какой-то момент легче провести манипуляции заново, чем вспоминать, что именно делает сложный макрос, есть ли он вообще, и можно ли его применить в данной конкретной ситуации.


В Виме макросы, как правило, не пишутся и не сохраняются. Просто, когда необходимо несколько раз повторить одну и ту же последовательность действий, то используется режим записи команд в регистр: q{0-9a-zA-Z"}.
Ce n'est que pour vous dire ce que je vous dis.
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 05.04.12 12:38
Оценка:
M>>Аналогично со «сложными макросами». Сложные макросы для манипуляции текста я перестал писать еще в 95-м ворде, потому что чем макрос сложнее, чем уже сфера его применения и тем он бесполезнее. В какой-то момент легче провести манипуляции заново, чем вспоминать, что именно делает сложный макрос, есть ли он вообще, и можно ли его применить в данной конкретной ситуации.

DR>В Виме макросы, как правило, не пишутся и не сохраняются. Просто, когда необходимо несколько раз повторить одну и ту же последовательность действий, то используется режим записи команд в регистр: q{0-9a-zA-Z"}.


Ну так тем более Выделенное тем более применимо


dmitriid.comGitHubLinkedIn
Re: Про vi(m)
От: ArtemGorikov Австралия жж
Дата: 05.04.12 13:12
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Основной посыл про vi(m) выглядит так:

M>

M>Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.


M>или даже так:

M>

M>vim умеет столько всего, что студии(эклипсу, ноутпаду) и не снилось


Не так- Eclipse может такое, что редактору студии не снилось (в плане рефакторинга и поддержки дофига языков), а еще он есть под маком и линухом. Vim хорош, когда надо пролезть через ssh например, или по-быстрому подправить файл. Но в то же время править файлики через sftp в TextWrangler на порядок удобнее вима.
Re[4]: Про vi(m)
От: Tanker  
Дата: 05.04.12 13:48
Оценка:
Здравствуйте, genre, Вы писали:

T>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.


G>можно юзкейс?


Refactoring Rename
The animals went in two by two, hurrah, hurrah...
Re[7]: Про vi(m)
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 05.04.12 14:01
Оценка:
Здравствуйте, Mamut, Вы писали:

M>осталось узнать, сколько времени уходит на из изучение


Изучение Вима никогда не заканчивается. Он как С++.
Ce n'est que pour vous dire ce que je vous dis.
Re[5]: Про vi(m)
От: genre Россия  
Дата: 05.04.12 14:45
Оценка:
Здравствуйте, Tanker, Вы писали:

T>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.


G>>можно юзкейс?


T>Refactoring Rename


вот именно что рефакторинг. его и надо делать специальным тулом. а не заменой текста по всему проекту.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[4]: Про vi(m)
От: Cyberax Марс  
Дата: 05.04.12 16:38
Оценка:
Здравствуйте, 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 это не особо поможет.
Sapienti sat!
Re[4]: Про vi(m)
От: Eugeny__ Украина  
Дата: 05.04.12 21:28
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

M>>Пока что примеры таких задач праткически никто не привел (кто привел — можно посмотреть по оценкам от меня в этом топике. Обычно они в первом уровне).


EOH>Я рассказываю исключительно про свое впечатление за последние пять лет плотной работы с VIM. В целом я уже более десяти лет активно использую Visual Studio, много лет использовал emacs, так что есть с чем сравнивать. Продавать вам VIM я не собираюсь, так что специально вспоминать и описывать здесь ситуации сложной замены, когда VIM экономил очень много времени, не буду — достаточно того, что я этими соображениями поделился.


Это ты с идеей не работал . У нее настолько потрясающие возможности интеллектуальной работы с кодом(т.е. она знает все про твой код, причем на разных языках, даже если они в одном файле вперемешку), что читать про возможности работы с кодом текстового редактора просто смешно. Как текстовый редактор ВИМ отличен, но что он знает про структуру проекта(и связанных с ним), используемые либы, используемые технологии? Он умеет в пару кликов привязаться к серверу приложений(заодно выкачав его, поставив и настроив)? Он умеет перестроить кусок кода с сохранением функционала в другую структуру? И если я начну перечислять все возможности, я сегодня спать не ляжу.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[5]: Про vi(m)
От: Eugeny__ Украина  
Дата: 05.04.12 21:52
Оценка:
Здравствуйте, Tanker, Вы писали:


T>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.


G>>можно юзкейс?


T>Refactoring Rename


Прекрасный пример. Если у нас совпадают имена, но не совпадают реальные объекты(т.е. они никак не связаны) вим сможет это определить? А если у нас класс(ну вот будем про джаву говорить, например) обявлен в джава коде, но при этом в другом пакете есть одноименный, но они оба использубтся в скриптлетах jsp(где используется также одноименный js объект, и есть параметры тэга html с таким же именем), и в коде на scala, а также в xml конфигах спринга, сможет ли вим корректно переименовать(одним действием программиста) использования только этого класса, на затронув логически неподходящие, хоть и называющиеся так же сущности в различных забавных местах?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[2]: Про vi(m)
От: NiJazz Австралия  
Дата: 05.04.12 23:08
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>
G>public void MyFunction(Integer param1,
G>                       Integer param2,
G>                       String s) {
G>...
G>}
G>


G>VIM:

G>$ v i (
G>итого 4 нажатия

А если vim старый, без visual mode?
Альтернатива:
$ d %
Re[6]: Про vi(m)
От: ryf  
Дата: 05.04.12 23:47
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>Здравствуйте, Mamut, Вы писали:


G>>>При выделении текста мышкой концентрация внимания повышается, при постоянной работе с текстом таким образом приведет к сильному утомлению.


M>>А следить за текущим контекстом не требует дополнительной концентрации внимания?


G>Нет, не требует. Привычка делать двойной Эскейп после выполнения каждой операции — и ты уже не следишь за контекстом.

G>Особенно эта привычка актуальна при терминальной работе, когда курсов не меняет свой вид в зависимости от режима )

...
я уже давно это повесил на jj, тогда и руки не надо двигать.

imap jj <Esc>
Re[8]: Про vi(m)
От: neFormal Россия  
Дата: 06.04.12 07:49
Оценка:
Здравствуйте, Don Reba, Вы писали:

M>>осталось узнать, сколько времени уходит на из изучение

DR>Изучение Вима никогда не заканчивается. Он как С++.

не нужен?
...coding for chaos...
Re: Про vi(m)
От: neFormal Россия  
Дата: 06.04.12 07:54
Оценка:
Здравствуйте, Mamut, Вы писали:

M>После чего возникает резонный вопрос — а что именно им не снилось и что именно уметт vi(m) такого, что другие не умеют?


быстро запуститься и быстро выключиться.. остальные т.н. "преимущества" условны и/или имеют аналоги..
...coding for chaos...
Re[6]: Про vi(m)
От: Tanker  
Дата: 06.04.12 09:54
Оценка:
Здравствуйте, Eugeny__, Вы писали:

T>>Refactoring Rename


E__>Прекрасный пример. Если у нас совпадают имена, но не совпадают реальные объекты(т.е. они никак не связаны) вим сможет это определить? А если у нас класс(ну вот будем про джаву говорить, например) обявлен в джава коде, но при этом в другом пакете есть одноименный, но они оба использубтся в скриптлетах jsp(где используется также одноименный js объект, и есть параметры тэга html с таким же именем), и в коде на scala, а также в xml конфигах спринга, сможет ли вим корректно переименовать(одним действием программиста) использования только этого класса, на затронув логически неподходящие, хоть и называющиеся так же сущности в различных забавных местах?


Спасибо за уточнение.
The animals went in two by two, hurrah, hurrah...
Re[6]: Про vi(m)
От: Tanker  
Дата: 06.04.12 10:29
Оценка:
Здравствуйте, genre, Вы писали:

T>>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.

G>>>можно юзкейс?
T>>Refactoring Rename

G>вот именно что рефакторинг. его и надо делать специальным тулом. а не заменой текста по всему проекту.


А можно ссылку, где я предложил делать рефакторинг заменой текста по всему проекту ?
The animals went in two by two, hurrah, hurrah...
Re[7]: Про vi(m)
От: genre Россия  
Дата: 06.04.12 12:01
Оценка:
Здравствуйте, Tanker, Вы писали:

T>>>>>Не пофиг. И по этой причине большие изменения откладываются на потом. Ctrl-R-R — модифицирует хоть сто, хоть тыщу файлов. А руками так никто никогда не делал и делать не будет.

G>>>>можно юзкейс?
T>>>Refactoring Rename

G>>вот именно что рефакторинг. его и надо делать специальным тулом. а не заменой текста по всему проекту.


T>А можно ссылку, где я предложил делать рефакторинг заменой текста по всему проекту ?


А, я понял, Ctrl-R R это как раз рефакторинг в студии? у меня в идее это реплейс.

Ну тогда возражения снимаются, но возникает вопрос с чем ты споришь, с моим утверждением, что продвинутые способы поиска и замены это не самое важное?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[8]: Про vi(m)
От: Tanker  
Дата: 06.04.12 12:13
Оценка:
Здравствуйте, genre, Вы писали:

G>Ну тогда возражения снимаются, но возникает вопрос с чем ты споришь, с моим утверждением, что продвинутые способы поиска и замены это не самое важное?


Я указал тебе на ошибку в твоей аргументации и даже выделил, где именно "G>а какая разница? если объективно, то средний программист пишет настолько мало кода в день, что абсолютно пофиг сколько кнопок нажимать. "
Почему ты решил, что я оспариваю актуальность продвинутых способов поиска и замены мне свершенно не ясно.
The animals went in two by two, hurrah, hurrah...
Re[9]: Про vi(m)
От: genre Россия  
Дата: 06.04.12 12:52
Оценка:
Здравствуйте, Tanker, Вы писали:

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

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

похоже ты не понял о чем я.
последнее предложение из первого поста в теме:
M>Так вот мне стало интересно. О чем же именно не могут даже и мечтать другие редакторы по сравнению с vi(m)'ом? Только убедительная просьба. Если будете считать количество клавиш, то разница должна быть на порядок хотя бы, а не на одно-два нажатия

так вот я именно про это. что на самом деле не важно 10 нажатий кнопок надо, чтобы сделать замену/рефакторинг/итд или 5. потому что это экономия пары минут в день максимум.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[10]: Про vi(m)
От: Tanker  
Дата: 06.04.12 13:48
Оценка:
Здравствуйте, genre, Вы писали:

G>так вот я именно про это. что на самом деле не важно 10 нажатий кнопок надо, чтобы сделать замену/рефакторинг/итд или 5. потому что это экономия пары минут в день максимум.


Если в этом смысле, то я согласен.
The animals went in two by two, hurrah, hurrah...
Re[2]: Про vi(m)
От: NiJazz Австралия  
Дата: 06.04.12 23:03
Оценка:
Здравствуйте, vpchelko, Вы писали:

V>Разве в vim есть поддержка мышки?


MacVim, GVim — да
Re[3]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 06.04.12 23:33
Оценка:
Здравствуйте, NiJazz, Вы писали:

V>>Разве в vim есть поддержка мышки?


NJ>MacVim, GVim — да


Она и в обычной консоли вообще-то есть :-)
До последнего не верил в пирамиду Лебедева.
Re[2]: Про vi(m)
От: Erop Россия  
Дата: 07.04.12 09:21
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>В обычном редакторе:

G>END CTRL+LEFT CTRL+LEFT SHIFT+DOWN SHIFT+DOWN SHIFT+END LEFT LEFT LEFT
G>(потому что указанная комбинация сработает в любом случае, главное чтобы курсор оказался внутри скобок). А если нужно выделить текст внутри других парных символов, скажем квадратных скобок или кавычек, то достаточно нажать $ v i "

G>
G>public void MyFunction(
G>                       Integer param1,
G>                       Integer param2,
G>                       Integer param3,
G>                       Integer param4,
G>                       Integer param5,
G>                       Integer param6,
G>                       String s
G>                      ) {
G>...
G>}
G>


Открой для себя CTRL+) в MSVC, ЛюкGyraboo!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Про vi(m)
От: vpchelko  
Дата: 07.04.12 16:03
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Она и в обычной консоли вообще-то есть


Да только, если консоль поддерживает мышку. Это поддержка консоли, а не вима.
Сало Украине, Героям Сала
Re[2]: Про vi(m)
От: vpchelko  
Дата: 07.04.12 17:02
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:
RO>

RO>Считая флейм «текстовый редактор vs IDE» закрытым, перейдем к собственно vi. Какие преимущества дает модальный редактор? Только те, которые ты назвал — «позволяет нажать чуть меньше клавиш». Например, в vi команда «удалить 10 символов» звучит как «10x», а в Emacs — «M-1 0 C-d», что по сути то же самое, только без модификаторов. Это, и еще то, что в Emacs можно запускать кучу программ и работать с ними примерно так же, как с текстовыми буферами, и составляет основную разницу между ними.

/facepalm
Ебал её рука
Сало Украине, Героям Сала
Re: Про vi(m)
От: Alessa  
Дата: 09.04.12 08:26
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Основной посыл про vi(m) выглядит так:

M>

M>Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.


одно слово перечеркнёт всё вышенаписанное: emacs
Re[2]: Про vi(m)
От: Eugeny__ Украина  
Дата: 09.04.12 08:32
Оценка:
Здравствуйте, Alessa, Вы писали:

M>>Основной посыл про vi(m) выглядит так:

M>>

M>>Vim умеет всё, что умеет редактор Студии и вообще традиционные редакторы. А вот обратное неверно.


A>одно слово перечеркнёт всё вышенаписанное: emacs


И что, емакс умеет работать с кодом?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[3]: Про vi(m)
От: Alessa  
Дата: 09.04.12 09:22
Оценка:
Здравствуйте, Eugeny__, Вы писали:

E__>И что, емакс умеет работать с кодом?


((умеет
(http://lurkmore.to/GNU_Emacs) всё))
Re[3]: Про vi(m)
От: andrey.desman  
Дата: 09.04.12 09:57
Оценка:
Здравствуйте, NiJazz, Вы писали:

NJ>Это SnipMate? Как это сделать? Табы не прокатывают.

NJ>Или другой плагин?
NJ>Умоляю!

Да, это snipmate. Что значит табы не прокатывают?
Re[5]: Про vi(m)
От: monax  
Дата: 09.04.12 10:09
Оценка:
Здравствуйте, 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


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

Если ты будешь возражать на "Изучаешь ту часть, которая помогает тебе работать с большим комфортом" доводом — "чтобы понять, что нужно, нужно много о нём прочесть", то сразу скажу, что с любым инструментом так, включая любимый скриптовый язык.
Re[4]: Про vi(m)
От: Eugeny__ Украина  
Дата: 09.04.12 11:30
Оценка:
Здравствуйте, Alessa, Вы писали:

E__>>И что, емакс умеет работать с кодом?


A>((умеет

A> (http://lurkmore.to/GNU_Emacs) всё))

Ну, лурку почитать это хорошо, но если говорить серьезно. Как на емаксе произвести корректное переименование класса в большом проекте(самый банальный и простой рефакторинг), где этот класс используется в разных ЯП и в разных типах файлов, и при этом в проекте есть класс с таким же именем, а также другие объекты с таким же именем?
При этом вариант "написать скрипт на лиспе" меня не устраивает совершенно. Мне чтобы парой кликов.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 10.04.12 07:51
Оценка:
M>Тут ведь никто не заставляет тебя учить всё, что написано в вимовском хелпе. Изучаешь ту часть, которая помогает тебе работать с большим комфортом.

Я тут все пытаюсь понять, что же мне даст этот комфорт. Пока не вижу. Например, каким образом я могу найти в хелпе про Shift+V?

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


M>Если ты будешь возражать на "Изучаешь ту часть, которая помогает тебе работать с большим комфортом" доводом — "чтобы понять, что нужно, нужно много о нём прочесть", то сразу скажу, что с любым инструментом так, включая любимый скриптовый язык.


Да, буду возражать, и уже возразил. Потому что выделенная фраза — это недостижимый сферовакуум.


dmitriid.comGitHubLinkedIn
Re[7]: Про vi(m)
От: andrey.desman  
Дата: 10.04.12 08:44
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Я тут все пытаюсь понять, что же мне даст этот комфорт. Пока не вижу. Например, каким образом я могу найти в хелпе про Shift+V?


Не "Shift+v", а "V".
:help V

:help и далее по содержанию
:helpgrep visual
Re[8]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 10.04.12 08:55
Оценка:
M>>Я тут все пытаюсь понять, что же мне даст этот комфорт. Пока не вижу. Например, каким образом я могу найти в хелпе про Shift+V?

AD>Не "Shift+v", а "V".

AD>:help V

Напечатал. Вижу толпу текста типа

*V* *linewise-visual*

V start Visual mode likewise.

*CTRL-V* *blockwise-visual*
CTRL-V start Visual mode blockwise.


reselct visual
left mouse
leftrelease
changing the visual area


ну и т.д. и т.п.

И? Где мне начинать читать, чтобы делать комфортно?

AD>:help и далее по содержанию


Агага. Я когда-то пытался по содержанию. Включая 30-минутный туториал (в котором я где-то посередине сломался).

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

AD>:helpgrep visual


(1 of 143): character has a different visual form based on its relative location


Как перейти к следующему в поиске не имею ни малейшего представления.


dmitriid.comGitHubLinkedIn
Re: Про vi(m)
От: monax  
Дата: 13.04.12 05:36
Оценка:
На вот ещё почитай http://robots.thoughtbot.com/post/13164810557/the-vim-learning-curve-is-a-myth
Re[2]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 13.04.12 06:09
Оценка:
M>На вот ещё почитай http://robots.thoughtbot.com/post/13164810557/the-vim-learning-curve-is-a-myth

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


dmitriid.comGitHubLinkedIn
Re[2]: Про vi(m)
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 14.04.12 13:00
Оценка:
Здравствуйте, Gorbatich, Вы писали:

G>Vim это убогий старый редактор черного цвета. Может быть лет 20 назад он был крут но сейчас это каменный век. Бообще все должно делаться мышкой, максимум есть необходимость использовать CRTL C, CTRL V. А там и этого есть зато есть куча гамна, которая неизвестно как работает.


Настоящие хипстеры программируют пальцем, причём не выходя из Фейсбука. Мышь если и не каменный век, то в лучшем случае бронзовый.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Про vi(m)
От: Eugeny__ Украина  
Дата: 14.04.12 19:22
Оценка:
Здравствуйте, Gorbatich, Вы писали:


G>Vim это убогий старый редактор черного цвета. Может быть лет 20 назад он был крут но сейчас это каменный век. Бообще все должно делаться мышкой, максимум есть необходимость использовать CRTL C, CTRL V. А там и этого есть зато есть куча гамна, которая неизвестно как работает.


Да ну нет, для опеделенных задач он может быть хорош. Как простецкий sed можер рвать все и вся при некоторых условиях. Но для работы с кодом — это ничто, и полное уродство. Я поработал с Идеей — ну вот реально "develop with pleasure". Даже на весьма сильный Эклипс не хочется возвращаться, про убогую Студию вообще молчу. Что-то другое — это вообще трэш.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[3]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 15.04.12 08:50
Оценка:
Здравствуйте, 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 к инструменту, который умеет рефакторинг и прочее. Некоторые даже пытались, но до конца, похоже, не довели.

А пример всё же приведу, не далее как пару дней назад потребовался.

Было:
("cardio",          { "en": "Cardiology"          , "fr": u"Cardiologie"           }),
("endrocrino",      { "en": "Endocrinology"       , "fr": u"Endocrinologie"        }),
("gastro",          { "en": "Gastroenterology"    , "fr": u"Gastroenterologie"     }),
("hemato-onco",     { "en": "Hematology/Oncology" , "fr": u"Hématologie/oncologie" }),
("infectio",        { "en": "Infectiology"        , "fr": u"Infectiologie"         }),
("medecineinterne", { "en": "Internal medicine"   , "fr": u"Médecine interne"      }),
("nephrologie",     { "en": "Nephrology"          , "fr": u"Nephrologie"           }),
("neurologie",      { "en": "Neurology"           , "fr": u"Neurologie"            }),
("pneumologie",     { "en": "Pulmonology"         , "fr": u"Pneumologie"           }),
("rhumatologie",    { "en": "Rheumatology"        , "fr": u"Rhumatologie"          }),

ls выдает:
Cardio  Endocrinology  Gen Int Med  GI  Hem-Onc  ID  Nephro  Neuro  Pneumo  Rhumato

Надо сделать:
("cardio",          "Cardio",        { "en": "Cardiology"          , "fr": u"Cardiologie"           }),
("endrocrino",      "Endocrinology", { "en": "Endocrinology"       , "fr": u"Endocrinologie"        }),
("gastro",          "GI",            { "en": "Gastroenterology"    , "fr": u"Gastroenterologie"     }),
("hemato-onco",     "Hem-Onc",       { "en": "Hematology/Oncology" , "fr": u"Hématologie/oncologie" }),
("infectio",        "ID",            { "en": "Infectiology"        , "fr": u"Infectiologie"         }),
("medecineinterne", "Gen Int Med",   { "en": "Internal medicine"   , "fr": u"Médecine interne"      }),
("nephrologie",     "Nephro",        { "en": "Nephrology"          , "fr": u"Nephrologie"           }),
("neurologie",      "Neuro",         { "en": "Neurology"           , "fr": u"Neurologie"            }),
("pneumologie",     "Pneumo",        { "en": "Pulmonology"         , "fr": u"Pneumologie"           }),
("rhumatologie",    "Rhumato",       { "en": "Rheumatology"        , "fr": u"Rhumatologie"          }),

IDE тут не поможет никак, а Vim справился без проблем.
До последнего не верил в пирамиду Лебедева.
Re[4]: Про vi(m)
От: avpavlov  
Дата: 15.04.12 14:52
Оценка:
С удовольствием послушаю про сеанс вимовской магии, которая умеет из этой строки

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 справился без проблем.


Прямо дрожжу от нетерпения
Re[5]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 15.04.12 17:29
Оценка:
Здравствуйте, avpavlov, Вы писали:

A>С удовольствием послушаю про сеанс вимовской магии, которая умеет из этой строки

RO>>("gastro", { "en": "Gastroenterology" , "fr": u"Gastroenterologie" }),
A>+ вот этой
RO>>
Cardio  Endocrinology  Gen Int Med  GI  Hem-Onc  ID  Nephro  Neuro  Pneumo  Rhumato

A>Делать вот такую.
RO>>("gastro", "GI", { "en": "Gastroenterology" , "fr": u"Gastroenterologie" }),

Это как раз очень просто с использованием вертикальных блоков. Они вообще очень простые — надо знать только команду ˆV и что в этом режиме делают I/A/c и ^/$.

:s%␣␣%\r%g — разбить строку на несколько (ну или взять вывод ls -1 вместо просто ls)
ddjjp — привести порядок строк к нужному (одна не на месте)
vipˆV I"‹Esc› gv$A",‹Esc› gvy — взять в кавычки, скопировать
ткнуть мышкой в «{», нажать P — готово.
До последнего не верил в пирамиду Лебедева.
Re[5]: Про vi(m)
От: Roman Odaisky Украина  
Дата: 15.04.12 17:58
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Хороший текстовый редактр делает все на одном уровне — плохом :) Потому что код — это не совсем текст. Это весьма структурированный и контекстно-зависимый текст. В итоге мне тут рассказывают сказки про глобальный Find/Replace, о том, что нажать a + начать редактировать — это быстрее, чем нажать Right + начать редактировать и т.п. :)


Тем не менее, IDE не предоставляют универсальных средств работы с кодом как с AST. Как бы это могло выглядеть? Lisp-подобные макросы? XSLT?

Рефакторинг — мощный инструмент, но нисколько не универсальный. Например, Eclipse умеет превращать !A && !B в !(A || B), чего текстовый редактор, конечно, автоматически не сделает. А вот функция «поменять местами блоки if и else» там не предусмотрена, и нужно это делать обычными текстовыми операциями.

Всё равно приходится каждый день делать более 9000 операций вида «поменять местами две строчки», и тут удобный универсальный редактор очень сильно помогает.
До последнего не верил в пирамиду Лебедева.
Re[6]: Про vi(m)
От: avpavlov  
Дата: 15.04.12 18:29
Оценка:
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
Re[6]: Про vi(m)
От: avpavlov  
Дата: 15.04.12 18:47
Оценка:
RO>Рефакторинг — мощный инструмент, но нисколько не универсальный. Например, Eclipse умеет превращать !A && !B в !(A || B), чего текстовый редактор, конечно, автоматически не сделает. А вот функция «поменять местами блоки if и else» там не предусмотрена, и нужно это делать обычными текстовыми операциями.


ИДЕЯ умеет менять местами if else — подозреваю что Эклипс тоже умеет, а ты плохо смотрел.

RO>Всё равно приходится каждый день делать более 9000 операций вида «поменять местами две строчки», и тут удобный универсальный редактор очень сильно помогает.


ИДЕЯ умеет менять местами 2 строчки, дублировать строчки, объединять строчки — ну и рефакторинг заодно
Re[6]: Про vi(m)
От: avpavlov  
Дата: 15.04.12 18:54
Оценка:
RO>Тем не менее, IDE не предоставляют универсальных средств работы с кодом как с AST. Как бы это могло выглядеть? Lisp-подобные макросы? XSLT?

Платная версия ИДЕИ умеет Structural Search/Replace — но я практически не пользовался, сложновато вышло у них и ниша неясна. За массовые и немассовые простые случаи отвечает рефакторинг, немассовые сложные проще исправить руками чем настроить этот поиск, массовые сложные — мне не встречались

И вообще, рефакторинг в ИДЕЕ умеет много чего кроме того что про него и так знают

Например, когда через рефакторинг добавляешь параметр в метод, то ИДЕЯ может

1) протащить этот параметр через иерархию вызовов (т.е. добавить новый параметр и в выызывающие методы)
2) поискать возможный аргумент в контексте — например если перед вызовом ф-ции есть локальная переменная данного типа или поле класса — подставить их в вызов
Re[6]: Про vi(m)
От: Mamut Швеция http://dmitriid.com
Дата: 16.04.12 10:03
Оценка:
M>>Хороший текстовый редактр делает все на одном уровне — плохом Потому что код — это не совсем текст. Это весьма структурированный и контекстно-зависимый текст. В итоге мне тут рассказывают сказки про глобальный Find/Replace, о том, что нажать a + начать редактировать — это быстрее, чем нажать Right + начать редактировать и т.п.

RO>Тем не менее, IDE не предоставляют универсальных средств работы с кодом как с AST. Как бы это могло выглядеть? Lisp-подобные макросы? XSLT?


Универсальные средства обычно полный отстой. По определению универсальности

RO>Рефакторинг — мощный инструмент, но нисколько не универсальный. Например, Eclipse умеет превращать !A && !B в !(A || B), чего текстовый редактор, конечно, автоматически не сделает. А вот функция «поменять местами блоки if и else» там не предусмотрена, и нужно это делать обычными текстовыми операциями.


RO>Всё равно приходится каждый день делать более 9000 операций вида «поменять местами две строчки», и тут удобный универсальный редактор очень сильно помогает.


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


dmitriid.comGitHubLinkedIn
Re[7]: Про vi(m)
От: Eugeny__ Украина  
Дата: 16.04.12 11:02
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну так покажите мне, в чем он помогает Пойми, я не против редакторов вообще и вима в целом Но пока что на тонны воды и демагогии — практически ни одного внятного примера. Причем, можно почитать мои ответы — я соглашаюсь с описываемыми удобствами, если таковые есть


Я вот тоже не против вима как _текстового_ редактора. Но я уже писал — для кода он не подходит. Ибо это попытка забивать гвозди шуруповертом.

Я так и не дождался, как же мне в виме сделать банальную для любой нормальной IDE вещь — корректно переименовать класс, когда он используется в самых разных местах и разных языках/файлах(см. выше посты). Все как воды в рот набрали, твердят про какие-то "поменять две строчки местами".
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[7]: Про vi(m)
От: Privalov  
Дата: 16.04.12 12:33
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну так покажите мне, в чем он помогает Пойми, я не против редакторов вообще и вима в целом Но пока что на тонны воды и демагогии — практически ни одного внятного примера. Причем, можно почитать мои ответы — я соглашаюсь с описываемыми удобствами, если таковые есть


Вряд ли ты получишь такой пример. Например я использую текстовые редакторы почти исключительно для чтения логов, конфигов, иногда XML, в общем, файлов, не имеющих прямого отношения к коду. Но и в этом случае я не использую vim. Использовать текстовые редакторы для кодирования перестал, как только появилась нормальная IDE для Фортрана под Винду.
Re[6]: Про vi(m)
От: Ромашка Украина  
Дата: 17.04.12 18:33
Оценка:
Здравствуйте, haba_haba_haba, Вы писали:
__>Например так:
Ты, черт возьми, нашел чем гордиться.... Индусы, блин...

declare @i int
set @i = 1

while @i <= 100
    begin
    insert into my_table(id, name) values (@i, 'Phillip Morris ' + @i)
    set @i = @i + 1
    end


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[7]: Про vi(m)
От: haba_haba_haba Россия  
Дата: 18.04.12 06:07
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Здравствуйте, haba_haba_haba, Вы писали:

__>>Например так:
Р>Ты, черт возьми, нашел чем гордиться.... Индусы, блин...

Р>
Р>declare @i int
Р>set @i = 1

Р>while @i <= 100
Р>    begin
Р>    insert into my_table(id, name) values (@i, 'Phillip Morris ' + @i)
Р>    set @i = @i + 1
Р>    end
Р>


А на перле можешь, белый господин?

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