Pull to refresh

Comments 30

Набрать предложенный текст при покупке.

Подскажите, а насколькр отлично содержимое книги 8-го издания от 7-ой версии вышедшей в 2013г.?


P.S. Недавно встретился пост о редакторе AkelPad под Windows, но с возможностью и запуска его через Wine под Linux и стало интересно, а насколько и кем такая функциональность реализованная в редакторе действительно используется и востребована.
Из недавнего, к примеру, в рамках использования Geany под Linux приглянулась возможность использования MarkDown разметки файлов при их отображении в редактировании реализованна в виде плагина к редактору.
Думаю, что расширения, в целом, программы не заменят, к примеру, более специализированные решения как WinMerge в своей функциональности.

Уже восьмое издание, а всё ещё не поняли зачем нужен Vim. Вим (в качестве ide, а не редактора конфигов) - это не про yy и dd, а про расширяемость. И самое важное в нём - это экосистема и как совмещать плагины. Этот учебник рассказывает про отличия packer, dein и vundle? А как настроить language server для своего языка? Какие компоненты должны быть у уважающего себя редактора - линтер, форматтер, автодополнения, навигация по репозиторию?

Позволю себе не согласиться. Вот уже классический ответ на stackoverflow: https://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118

Плагинами можно обвешиваться и в саблайме, и в вскоде, и в емаксе. Вим отличается от них всех не линтерами и форматтерами (но полу-автодополнение в нём из коробки великолепное).

emacs - это тёмная сторона vim'а, с ним всё хорошо. Мне нравится, что саблайм тоже спроектирован с упором на модули, но они просто хуже и всё тут. Когда они станут лучше, всё ещё останутся проблемы с эргономикой самого редактора. Про вскод не знаю.
Что касается ответа - разрешаю не согласится, но автор рассказывает как он может быстро и ловко редактировать текст. Я же хочу редактировать код, поэтому я не буду пользоваться заменами типа %s old_name/new_name/g, который меняет строки текста в файле. Я возьму плагин, который заменит мне все символы (имена функции) в проекте целиком, не трогая, например, текст в комментариях или ещё что.

А зря сразу отказываетесь от %s///, в комментариях бывают примеры употребления функции :) Так что возможно, что их тоже надо менять.

Я не пробовал емакс, так что не могу ничего про него сказать. Саблайм был классным, пока я не разобрался как пользоваться вимом. И в нём я регулярно пользуюсь вещами типа "удалить весь параграф (всё между двумя пустыми строками", "удалить отсюда и до кавычки", макросами. А потом можно добавить несложных плагинов и быстро менять вид скобочек, научиться работать с ответом "тест с текущим уровнем отступа". Конечно же, lsp это круто, линтеры, форматтеры и вся эта красота. Но они есть под любой достаточно популярный редактор, и их работа больше зависит от имплементации конкретных сервера, линтера и форматтерами, чем от редактора. Возможно, что я не прав в этом, но по моему опыту всё это работало примерно одинаково (ну разве что хоткеи разные) в вскоде, саблайме и виме.

Upd. Забыл ещё одну мысль. Работать с кодом как с кодом несомненно удобно. Но иногда есть смысл вспоминать, что код — это просто текст, и некоторые текстовые операции к нему вполне можно применять. И лично мне в такие моменты немедленно становится тяжело в других редакторах: они удобны для кода (хотя и это не всегда), но не для текста.

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

На английском есть Mastering Emacs

Объясните, зачем нужна эта археоэкзотика вообще? Есть современные текстовые редакторы, тот же Notepad++ и множество других. Есть полноценные IDE для работы с исходниками на любых языках программирования. А в каких случаях еще требуются текстовые файлы? Конфиги, логи, и пожалуй всё. И в общем случае эти файлы не должны быть большие.

Vi и Vim, как я понимаю, это продукты древних систем с древними клавиатурами и полным отсутствием мышей и современного GUI (иначе как объяснить использование алфавитных клавиш для выполнения команд?).

Современные текстовые редакторы имеют GUI-основу, с достаточно ограниченным использованием клавиатуры; а "эта археоэкзотика" полностью стоит на ней [клавиатуре], что позволяет достаточно быстро и эффективно выполнять целевые задачи (собственно, редактирование текста). И это я еще не говорю про необьятные возможности конфигурации и адаптирования Vi(m) под себя.

Vi и Vim, как я понимаю, это продукты древних систем с древними клавиатурами и полным отсутствием мышей и современного GUI (иначе как объяснить использование алфавитных клавиш для выполнения команд?).

Интересно, какие это древние клавиатуры? И современное GUI только убило бы саму концепцию vi, которая показывает значительное превосходство перед графическим интерфейсом.

У Вас столько "специфичных" задач плохо решаемых другим инструментарием для того, чтобы как, к примеру, использование Far оставаться в рамках использования этих редакторов, или Ваши задачи немного больше, чем общепринято понимать как задачи для редактирования текстов?


P.S. Или это просто "продиктовано" Вашими сложившимся привычками?
Сам использую сочетания клавш Ctrl+C, Ctrl+V и пожалуй почти на этом всё и останавливается в повседневном взаимодействии с клавиатурой.
(часть своих действийи и в Far делаю с помощью мышки и не ощущаю дискомфорта от этого)

что позволяет достаточно быстро и эффективно выполнять целевые задачи (собственно, редактирование текста).

А куда торопиться? Вы секунды экономите при работе? ИМХО скорость набора актуальна только при вводе текста под диктовку, но никак не при решении интеллектуальных задач, таких как программирование.

Я начал программировать в далеком детстве на пленочном БК0010 на языке Фокал. Потом после него появились Компаньон-2, Дельта. Все это отечественные "приставки" к телевизору. Моя душа полюбила все эти "шестеренки" программного мира. Когда начал на своем первом Intel-совместимом компе начал использовать мою первую IDE под названием Visual C++ 6.0 счастью не было предела )) Потом понеслась: Delphi 7, Eclipse, Turbo Delphi, Netbeanse, Visual Studio 2008/2010/2013. Много что использовал и последним моим IDE был VsCode.

Казалось бы все могут! Мощные комбайны. Однако когда хочется контроля, т.е. ставилось только то что я сказал, а не то что вместо меня решил Microsoft или кто-то еще, то тут с этим проблемы. Занимает лишнее место и далеко не 1-2 МБ. Очень часто пожирает лишнюю память. Большая часть современных IDE устанавливает без ведома пользователя много того, что он не запрашивал "на всякий случай". Вот только этот "всякий случай" все почему-то не наступает!

Недавно начал использовать VIM после больше 15 лет использования различных IDE и поражаюсь своей глупости "Почему зная о таком инструменте я не нашел время взять и попробовать? Отказаться от использования же не трудно!".

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

При работе с текстом у нас возникает:

  • Огромное кол-во повторяемых действий. Это и рефакторинг, это и найти последовательность символов. Это и найти, потом вставить, потом вернуться назад и повторить с нескольким строками. Это и удалить 7 строк подряд. Это и переместить 3 строки на 5 по выше! И много чего !!!

  • Также, очень часто программист смотрит на код! Да! Когда говорят про рефакторинг это не от хорошей жизни! А от того что мы, программисты, больше смотрим на код, чем пишем новый! Когда мы смотрим на код мы перемещаемся по нему. Вопрос: а зачем тогда давать программисту при просмотре возможность "напечатать случайно"? Чтобы что? Чтоб дать ему случайно внести багу? Именно от этого спасает "командный режим". Захочешь что сделать нажмешь нужные кнопки

  • Любой программист стремится меньше уставать, т.к. программирование это деятельность больше чем на 5 минут! Он экономит на всем! Пишет скрипты помогающие ему. Он учит горячие клавиши. Он ставит нужные инструменты. Он учится новым подходом. И одним из таких навыков для повышения своей эффективности это: навык слепой печати. Развивая этот навык он побочным эффектом получает: повышение скорости набора текста. Но самым главным эффектом от этого навыка руки меньше устают! В результате развития навыка программист быстрее пишет код и пробует свои идеи. Иногда действительно, лучше взять и сделать, увидеть результат и решить подходит или нет, чем долго думать и не факт что придумаешь адекватное ситуации решение. Но вот не задача, в случае IDE приходится перемещаться на стрелки или того хуже на мышку. Со временем уже привыкая к VIM ты понимаешь, что тебе не только на стрелки сложно перенести руку, но и на кнопку ESC !!! И ты вставляешь "inoremap jk <esc>" в свой конфиг, что позволяет оставаться ТОЛЬКО над клавиатурой!

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

Вопрос на тему: "Зачем надо использовать VIM, когда есть современные IDE?" звучит также как "Зачем использовать сортировку Хоара, когда есть пузырьковая сортировка? Сортирует же, че мучиться то?"

Раньше молодым ребятам изучающим программирование я всегда советовал такое:

  1. Учи английский

  2. Развивай навык слепой печати

  3. Развивай алгоритмическое мышление(сортировки, деревья, графы)

  4. Изучай Linux или FreeBSD и используй в качестве основной ОС

  5. Занимайся спортом

  6. Общайся с противоположным полом(не будь задротом)

  7. Развивай коммуникацию(ходи на конференции, знакомься с новыми людьми, пили с другими open Source проекты)

Но сейчас между 2 и 3 советую еще "Научись использовать VIM". Всего вам доброго!

В современных текстовых редакторах неудобно работать.

Эргономика - вим не требует тянуться к ctrl и стрелкам. И мышка тоже не нужна.
Всё в одном - у меня это среды под питон, хаскелл, луа, прозрачная работа с pgp шифрованными файлами.
Переносимость - я последнее время часто меняю машины. Конфиги вима - 3 файла (можно и одним обойтись)
Notepad++ просто плохо написан и это не ide.
Sublime - та же философия вим, только хуже экосистема. А так из коробки толком ничего нет, кроме приятной темы.
Разные реальные ide - ок, но обычно хорошо работают только с одним языком и неповоротливые.

Vim использует одни и те же клавиши для управления и (очевидно) для ввода текста. Значит, между этими режимами нужно как минимум переключаться. Я вот пока набирал это сообщение, много раз попадал не туда пальцем, пользовался стрелками, удалял и вводил заново. Это же сколько раз нужно было бы переключаться туда-сюда... а если учесть что я и в командном режиме мог много раз опечатываться, то в итоге я вообще бы ничего не ввел. Стрелки прекрасны тем что они стоят отдельно, по ним очень сложно промазать, в отличие от буквенных клавиш.

У меня вообще иногда бывает, что быстро ввожу в браузере какой-то текст, а затем случайно нажимаю ЧТО_ТО (какой-то неведомый хоткей) и страница обновляется, текст пропадает (а его может быть много). Поэтому я вообще не люблю слишком много хоткеев. Мне Ctrl-C и Ctrl-V и достаточно.

Мобилки - это мобилки тут всё всегда плохо.
Вопрос привычки - я на виме почти 10 лет и не пользуюсь большей частью хоткеев вообще. Мне важнее думать о плагинах чем о разных способах редактирования текста. И u u u обычно достаточно чтобы исправить случайно содеянное, а древовидная история редактирования текста (mundo) решает все проблемы со случайными изменениями.
На тему 10 лет - сколько редакторов сменили лично вы за это время, например? С notepad на notepad++, дальше sublime, потом pycharm - частый путь питониста и каждый раз осваивать заново новый редактор. Я за это время только сменил vim на neovim с идентичным функционалом.

У меня не мобилка а обычный комп с обычной клавиатурой.

А редакторы - собственно notepad'ом практически и не пользовался. Первая среда разработки - досовский Borland C++, затем виндовые Builder, Visual Studio всех версий, Qt Creator, Goland и многие другие IDE. Текстовые редакторы - UltraEdit, EmEditor, Notepad++ (Sublime не понравился, при первом знакомстве почему-то показалось что там нестандартный интерфейс, а я офигенно люблю все стандартное). Никаких проблем с ними нет, как редакторы они все совершенно стандартные и предсказуемые. Для работы с "человекоориентированным" текстом (не кодом, не конфигами...) - аутлайнеры (PIM), Тоже были разные - TreePad, Evernote, ZIM, в итоге перешел на свою программу с WYSIWYG редактором и прочим функционалом таким как я хочу. Ну и документы в MS Word, куда уж без него.

В результате совершенно не представляю зачем нужны vi/vim/emacs, какие задачи они решают и какие задачи решают на них люди. Но реально интересно. Это же целые сообщества людей, которые осознанно выбирают эти инструменты, развивают их... Не может же все сводиться к банальной ностальгии по каким-то старым-добрым временам, когда люди начинали именно с этих программ. Да и множество людей выбрали их уже во времена полноценных GUI, офисного софта и современных IDE.

В результате совершенно не представляю зачем нужны vi/vim/emacs

в итоге перешел на свою программу с WYSIWYG редактором и прочим функционалом таким как я хочу

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

Для меня основной причиной стало удобство. Хотя когда смотрел на vim первый раз, слово "удобный" — последнее, что приходило в голову.
Менее недели периодических посиделок в vim и мысли "зачем я тут страдаю" сменились на "как же приятно работать". Начинал с короткого vimtutor, затем посмотрел популярные плагины под язык, взял за основу чей-то конфиг, подобрал симпатичную тему и уже несколько лет пользуюсь.
Локально он у меня не заменил IDE, но хорошо дополнил. Удаленно на машинах стал главным редактором, там в nano и mcedit вообще не хочется возвращаться.

В результате совершенно не представляю зачем нужны vi/vim/emacs, какие задачи они решают и какие задачи решают на них люди.

По своему опыту:

IDE есть и используются. Рефакторить или дебажить относительно большие легаси лично мне удобнее в IDE. Но бывают и другие задачи. Могу набросать пару примеров:

  • Быстро открыть какой-нибудь конфиг или markup, что-то найти и исправить.

  • Сделать то же самое, что в предыдущем пункте, только на удаленной машине.

  • Написать условную курсовую со вставками кода, получить результат на месте (примерно как в Jupyter Notebook), и выводить всю эту красоту в HTML или в LaTeX/PDF готовый к печати.

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

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

Почему хвалят именно vim и emacs? Потому-что, не смотря на то, что они самые старые среди мейнстримовых редакторов, у них супер расширяемость и огромное комьюнити. В итоге, когда выходит новый <name>-lang, поддержка синтаксиса появляется максимум через неделю.

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

Vim использует одни и те же клавиши для управления и (очевидно) для ввода текста. Значит, между этими режимами нужно как минимум переключаться. Я вот пока набирал это сообщение, много раз попадал не туда пальцем, пользовался стрелками, удалял и вводил заново. Это же сколько раз нужно было бы переключаться туда-сюда... а если учесть что я и в командном режиме мог много раз опечатываться, то в итоге я вообще бы ничего не ввел. Стрелки прекрасны тем что они стоят отдельно, по ним очень сложно промазать, в отличие от буквенных клавиш.

Ваша ключевая ошибка в слове "нужно", из этого и неверные выводы. Не "нужно", а "можно". Вы можете перейти в режим ввода один раз и пользоваться только им, со стрелками и delete/backspace'ами. Даже ctrl-c/ctrl-v для этого режима можно настроить.

А разделение режимов в виме нужно для удобства. Он даёт больше, чем просто ввод. То есть им необязательно пользоваться, но если начать, то втягиваешься.

Питер! Неплохо было бы издать что-нибудь по Emacs.

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

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

Частично справедливое замечание, но есть один нюанс.

Работа с клавиатуры действительно быстрее работы мышкой, если обладаешь навыком слепой печати. Я не любитель vim, но с Visual Studio работаю схожим способом - с клавиатуры. Даже исследования есть по этому поводу, там речь от разнице в двое между мышкой и клавиатурой по скорости.

Sign up to leave a comment.