Редакторы в Юниксе и бунт поколений
Feb. 4th, 2009 06:28 pmВ Юниксе есть ровно два текстовых редактора. То есть программ, называющих себя текстовыми редакторами, множество, но профессионал запускает либо (x)emacs, либо vi(m). А так как работа - это как правило редактирование текстовых файлов, то выбранная однажды и изученная вдоль и поперек программа становится как бы продолжением руки. Пальцы сами знают комбинации клавиш, и работают автономно, не отвлекая сознание от важных вещей: я только подумаю, что стоило бы вот этот кусок текста передвинуть вот сюда, - а пальцы уже все сами сделали. Поэтому хотя считается хорошим тоном уметь работать в обоих редакторах, человек обычно проводит большую часть времени в одном, давно облюбованном. Умные админы это знают, и без вопросов ставят на машины оба - пользователи бывают разные.
Время от времени в юниксоидных сообществах новички начинают holy war о том, какой редактор лучше - и накалу страстей позавидовали бы крестоносцы с сарацинами. На самом деле лучше тот редактор, который удобнее для данного пользователя.
Я сам давным-давно выбрал emacs. Я в нем пишу, читаю, редактирую. Он же напоминает мне о том, что надо сделать, кому позвонить, и т.д. В общем, я живу в нем.
Недавно в разговоре с сыном выяснилось, что он использует только vim. Мы это обсудили и пришли к выводу, что это его вариант бунта поколений.
no subject
Date: 2009-02-04 11:38 pm (UTC)no subject
Date: 2009-02-05 12:08 am (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2009-02-05 02:14 am (UTC)Вообще-то и у него дом другой (и в другой стране), и в каждом доме далеко не один компьютер...
no subject
Date: 2009-02-04 11:51 pm (UTC)no subject
Date: 2009-02-05 12:08 am (UTC)no subject
Date: 2009-02-05 01:20 am (UTC)... do se casnu ...
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-02-05 12:14 am (UTC)no subject
Date: 2009-02-05 12:55 am (UTC)no subject
Date: 2009-02-05 03:37 am (UTC)забавно
Date: 2009-02-05 12:55 am (UTC)А мой папа пользуется вообще nedit.
Re: забавно
Date: 2009-02-05 02:15 am (UTC)Re: забавно
From:no subject
Date: 2009-02-05 01:07 am (UTC)Все попытки перелезть на vi и emacs провалились - просто начинаю печатать медленнее.
no subject
Date: 2009-02-05 01:26 am (UTC)Сорри. Сорвалась :))
no subject
Date: 2009-02-05 01:28 am (UTC)no subject
Date: 2009-02-05 01:33 am (UTC)Я уже почти десять лет работаю в Ворде, а не в emacs, но буквально вчера редактировала какой-то файл (смешно, но мои самые ценные данные таки в текстовых файлах, которые я редактирую только emacs, и на моем старом университетском аккаунте) -- да, так вот подумала "а как тут сохранить?" -- и чего-то в голову ничего не приходило, но на экране отразилось "file saved" -- потому что в голову может и не приходило, а пальцы уже отлично C-x C-s нажали и дальше печатали что надо. Так же и с другими простенькими коммандами.
Вот сейчас я подумываю, не выучить ли mutt в emcs и не читать ли почту таким образом. Все очень хвалят.
no subject
Date: 2009-02-05 06:22 am (UTC)no subject
Date: 2009-02-05 01:20 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-02-05 07:27 am (UTC)Единственное - emacs должен быть разботать из X, а не в терминале.
Правда, я использую vi(m) для правки конфигов. Им как-то проще и привычнее. И vi(m) легковеснее, хотя это уже спорно.
no subject
Date: 2009-02-05 07:30 am (UTC)Как emacs пользователь я люблю классифицировать пользователей vi по ответу на вопрос как они выходят из редактирования файла с записью. Обычно есть 3 варианта:
1. :wq! - ретрограды
2. :x - продвинутые
3. ZZ - пока кроме меня знаю только одного человека который знает про эту комбинацию -
no subject
Date: 2009-02-05 07:44 am (UTC)(no subject)
From: (Anonymous) - Date: 2009-02-05 08:08 am (UTC) - Expand(no subject)
From:??!
Date: 2009-02-05 07:55 am (UTC)1. Главная проблема редакторов в том, что буквы которые пишешь и которыми отдаешь команды - те же самые.
Было придумано 3 решения:
-- имакс: все через контрол-клавиши. Отсюда немыслимо длинные нажатия их комбинаций (клавиш мало, команд много) чтобы сделать хоть что-нибудь простое
-- ви(м): одна специальная клавиша переключает режим. В "печатном" буквы печатают, в "командном" (который извращённо назван "нормальным", как видим не только у политиков есть иллюзия что начальник всё, а то, чем он командует второстепенно) буквы означают лишь команды.
В результате короткие и прекрасные команды, но постоянная головная боль о том, в каком режиме находишься.
Если вим в графическом виде (gvim), то режим показывает форма курсора. Если в консоли, то надо делать еще одну операцию (равную нажатию еще одной клавиши) - прервать внимание и посмотреть на индикатор внизу окна.
-- IBM-овский редактор, который использовал для команд цифровую подгруппу на клавиатуре.
До сих пор идея не умерла, и такую раскладку можно включить например в jed'е (который много слабее чем emacs/vim).
Есть и отдельные минимальные implementations этого редактора.
Я придумал четвертое,
которое решает еще одну, вторую главную проблему vim'а: в разных режимах одни и те же клавиши ЗНАЧАТ РАДИКАЛЬНО РАЗНОЕ.
Например, crtl-U в командном листает экран вверх, а в печатном уничтожает строку (!!!)
Скудоумие разработчиков поражает: связать повседневную безопасную с деструктивной функциями на одной клавише. Блядь.
На самом деле серьезная претензия и к emacs и к vim'у в том, что все их клавиши выдумывались по ходу, бессистемно и не имеют мнемоник.
Так вот, это лечится моим четвертым методом. К счастью, vim позволяет очень широкий спектр of keyboard remappings, а потому я работаю в вим'е (как более "умной" с точки зрения команд системе), но со своими клавишами.
Думаю, я их могу remap и для emacs'а тоже, если будет надо.
2. Vim как редактор - более умная система. Он как и emacs манипулирует теми же самыми концепциями, но оформляет команды лучше.
Например, в Vim'е я всегда держу номера строк включенными, и двигаюсь, редактирую по их адресам, что резко сокращает количество того, что надо печатать.
:345
:,$s/
Re: ??!
Date: 2009-02-05 07:57 am (UTC)Sorry, disregard the example, which got garbled by LJ software
tchnical
From: (Anonymous) - Date: 2009-02-05 07:59 am (UTC) - ExpandRe: ??!
From:Re: ??!
From:no subject
Date: 2009-02-05 09:06 am (UTC)no subject
Date: 2009-02-05 08:34 pm (UTC)Ваша уверенность в том, что и emacs, и vi будут доступны внукам, внушает оптимизм.
Хм...
From:(no subject)
From:no subject
Date: 2009-02-05 12:06 pm (UTC)no subject
Date: 2009-02-05 12:10 pm (UTC)no subject
Date: 2009-02-05 01:52 pm (UTC)no subject
Date: 2009-02-05 05:24 pm (UTC)no subject
Date: 2009-02-05 08:34 pm (UTC)(no subject)
From:no subject
Date: 2009-02-05 09:33 pm (UTC)Может быть когда-нибудь посмотрю на емакс, скорее в его x разновидности. Но почему-то мне кажется, что и там не намного лучше (иначе не было бы паритета), и всё это - сраный опенсорсный каменный век по сравнению с сияющим солнцем победы вижуалстудии.
no subject
Date: 2009-02-05 09:42 pm (UTC)Кстати, под Emacs есть Vim мода, а в Vim под Emacs нету. ;-)
no subject
Date: 2009-02-08 07:40 pm (UTC)