Когда читал статью, не совсем понял нафига перебиндивать ctrl на capslock... сейчас только что надо было сделать очень много копи-паста... мизинец отвалился от ctrl-y :-D сейчас буду перебиндивать %)))
Раз уж зашёл разговор. Кто-нибудь пользует сей шедевр под виндой (шоб ей сдохнуть нах!)? Имеется Cyrillic-ISO/KOI-8/Alt, а ввод идёт в 1251. Как бы это дело привести в соответствие?
Спасибо за перевод. Кстати, если еще будешь что то переводить по теме, то пости ссылки и сюда: http://www.emacswiki.org/cgi-bin/emacs-ru/КатегорияДокументация. На эту статью я уже добавил.
Сие есть признак старого cedet-а, о котором я уже писал выше. Выкачай последний cedet (pre3) либо в нужных модах отключай проверку синтаксиса так (semantic-show-unmatched-syntax-mode 1) в дотемаксе илитам же глобально отключи (global-semantic-show-unmatched-syntax-mode 1)
А это...где там в emacs indent настраивается?
Вот например мне не нравится, что под каким-нить for или switch операторные скобки располагаются после таба, как бы его убрать?
Меня местные знатоки Лора сподвигли освоить Емакс. Де мол круче Вима и все такое. Повелся я на эту хрень и таки осилил его. Все было хорошо, до тех пор, пока не пришлось начать интенсивное редактирование текста. Тут он и забуксовал. Поэтому спустя четыре месяца использования емакса вернулся в Вим.
Уже пол года как пользуюсь только им и продолжаю изучать новые возможности. Которых(в отличие от емакса) просто немерянно.
Короче это старый флейм. Но может кто-то из новичков читает тред. Скажу сразу - если интересно безграничное море возможностей по настройке(и не надо бздеть что мол не настраивается, в вим7 уже вполне приличный язычок, даже чутнарь ООП есть), редактированию и продвинутой работе с текстом, добро пожаловать. Опираясь на собственный опыт могу сказать, что в емаксе и 10% возможностей по работе с текстом Вимовской нет.
Кроме того, Вим бережет ваши руки. А если вы перебиндите КапсЛок на эскейп жизнь станет еще лучше.
ЗЫ: статью посмотрел - ничего интересного не нашел. Идея с капслоком полным бред. Для емакса не актуально.
ЗЗЫ: все посты про Вим прочитал, ниодного зачетного обсыра, видно только кучка людей, которые недоосилили.
> Идея с капслоком полным бред. Для емакса не актуально.
А если подумать сначала?
Когда учат печати вслепую, показываются нормально положение рук над клавой. Дак вот, если присмотреться к тому где находятся пальцы в этом случае, то окажется, что Ctrl находится очень далеко и нажать на него не перемещая рук не возможно, в отличие от Caps. А Ctrl в Emacs самая часто используемая клавиша, и времени сэкономить можно кучу.
> Дак вот, если присмотреться к тому где находятся пальцы в этом случае, то окажется, что Ctrl находится очень далеко
я нажимаю Ctrl, Alt или Win рукой, противоположной функциональному символу. Т.е. если надо нажать C-x, я правой жму Ctrl, а левой -- x. При этом руку не изгибаю, а чуть сдвигаю вниз и жму мизинцем (Alt -- указательным, Win -- факом). Получается вполне удобно.
> Ctrl находится очень далеко и нажать на него не перемещая рук не возможно, в отличие от Caps.
Выше уже отписали, но добавлю от себя. Слепой набор. На клаву не смотрим. Фиксируем пальцы на фенечках. Пытаешься нажать Капс-лок - мизинец отгибается влево и сустав тянется. Когда делаешь такой-же пасс на Контрол - перемещается кисть и меньше устает соотв. сустав. Что для емакса весьма актуально.
Тоесть тут плюса явного нет. Теперь минусы. Ктрл-альт правый нажимается удобнее в стандартной комбинации. Аналогично теряем симметричность на правую руку(или ты смотришь на клаву и все на левом котроле отстукиваешь, тогда тебе пофиг от капслока будет в любом случае, лучше уже пусть раскладку переключает).
> А Ctrl в Emacs самая часто используемая клавиша, и времени сэкономить можно кучу.
И здесь мимо кассы. Во-первых контролЫ самые частые кнопки. Во-вторых для начала освой слепой набор, потом перейди на дворака(и лучше это делать одновременно), а потом пойми, что если ты хочешь экономить время, открывай Вим или Гвим и начинай реально экономить время.
> Пытаешься нажать Капс-лок - мизинец отгибается влево и сустав тянется. Когда делаешь такой-же пасс на Контрол - перемещается кисть и меньше устает соотв. сустав. Что для емакса весьма актуально.
можно скопировать, удалить часть строки. Например тебе нужно удалить текст от текущей позиции до символа {. df{ - delete find {. Если нужно скопировать: yf{ - yank find {. Для перещения просто жмешь ф и символ - перемещает к нужному символу в строке. Кроме того, можно удалить ДО нужного символа, что бывает также часто нужно как и включая. Например тебе нужно удалить название функции, а оно заканчивается на a - которая может в слове встречаться 3-4 раза. Но после назв. ф-ции идет фигурная скобка и тогда комбинация dt( (delete till(до) ( ) поможет тебе.
Второй прикол, когда находишься внутри кавычек, скобочек или между открывающим и закрывающим тегом - можно удалить/скопировать этот текст. Например di' - delete inner ' - удаляет текст между одиночными кавычками. Подставляешь вместо кавычки: (,{,[,t (tag) - делает эту операцию с соотв. символом. Если поставишь вместо d -> y - будет копировать. Кроме того можно написать da' - и удалит текст вместе с кавычкой.
Такие гламурные операции можно совершать со словами (diw, daw), предложениями(dis, das, yis, yas - sentence) и параграфами(dip, dap,... - paragraph). Притом все интуитивно и легко запомнить, если знать расшифровку.
Кроме того есть мод, который позволяет выделив строку в визуальном режиме(в емаксе ничего похожего по удобству нет(трансиент-мод незачет)), удалять или снимать обрамление кавычек или тегов с выделенного текста.
Дальше такие простые, но хорошие мелочи, как ввести последний набранный текст. Повторить последнюю операцию. Три режима выделения текста: символьный, строчный(хорош, когда копируешь кусок кода) и блочный(когда нужно удалить комменты ала баш или руби или плюсы) - выделяешь спереди соотв. колоночку и нажимаешь d. Или если хочешь вставить текст перед выделением - нажимаешь I (insert) и набираешь нужный текст. Ескейп - и он добавляется перед всеми выделенными колонками. Опять же по, последнему пункту емаксу незачет. Неудобная реализация имедж-мода, который позволяет делать блочное редактирование.
Дальше автокомплит - тут его кто-то хаял. Но есть ли в емаксе автодополнение целой строки? А это очень полезно. Я при кодировании и ведении записей постоянно пользую.
Притом в Виме настраиваются автодоплнения для разных "нейм-спейсов" и ты вместо длинного списка перебора получаешь возможность самому выбирать откуда и каким способом дополнить слово.
Это то, что вспомнил по редактированию. И это только небольшая часть.
Теперь еще прикольные моменты. Для Вима есть подстветка практически для любого языка. Отступы тоже нормальные, но для того, где их нормально реализовали. Все-таки это реализуется через плагины(как и в емаксе) и тут уже вим нипричем. Скажем для Руби они сделаны на пять. Для пхп на 4+. Но в емаксе с пхп вообще плохо, там чтобы завести связку цсс, хтмл, пхп нужно выпить литру яду и три раза убить себя оп стенку.
Если любишь Латех - тут куча разных прикольных плагинов для редактирования. Лично я постоянно для себя различные авто-дополнялки пишу. Язык не Лисп, но свои задачи делает и не шуршит. А вот насчет регулярных выражений, тут он может и Перлу дать на пиво.
Теперь насчет настройки. Настраивается Вим легко. Есть главный сайт vim.org - эдакий вимовский ЦПАН, я там много прикольных штук нашел. Практически под все задачи ты прикольные ништяки там можешь нарыть. И не придется, как для емакса рыться по всему инету в надежде найти что-то съедобное.
Цветовых схем - тьма, но юзать нужно Гвим. В консольных 16 цветах не шибко попрыгаешь да их еще и причесать нужно.
Гвим7 имеет качествунную поддержку всех последних ништяковых языков(Руби, Питон, Плюсы и не помню еще чего там) и закладки.
Да только вспомнил. Сейчас вовсю юзаю фолдинг. У Вима есть ТРИ! варианта. Один ты сам делаешь фолдинг горячими кнопками(zf). Оно создает комменты в коде со спец. последовательностью. Удобно для Латеха, чтобы контролировать какой фрагмент текста в данный момент скрыть, а какой показывать. Или для языков, у которых синтаксный фолдинг не пашет.
Для Руби есть гламурный плагин, которые делает синтаксный фолдинг и еще комменты причесывает перед функцией.
Второй как ты понял синтаксический фолдинг - нужно чтобы был реализован, но он обычно и сделан для всего юзаемого. И третий по отступам. Можно юзать для ЦСС-а и Питона. Хотя для последнего думаю есть и по кошернее вещи.
Ну вот, описал ту небольшую часть фишек, что вспомнил. Если заинтересует - гугли, ходи на вим.орг читай типсы и смотри плагины. Кроме того, там хороший туториал и удобный справочник встроенный.
Да, и чуть не забыл. Главное в этих возможностях, что все биндинги сделаны на обычные кнопки и контролы используются очень редко. Поэтому на кисти нагрузка в разы меньше.
Основная кнопка эскейп - но лучше капс-лок на него перебиндить. Вот здесь это реально дает огромное преимущество.
Еще навигация по тексту в кверти хороша. hjkl - на правую руку. К сожалению в двораке эту четверку разбили. Но и там неплохо живется.
> Для этого нужно опустить руку на несколько рядов ниже, а потом вернуть ее обратно. Еще раз смотрим картинку.
Все верно, но нижний контрол находится легко - он угловая кнопка(правда не в моем случае :), но раньше было именно так) и по нему уже легко найти Альт. И главное не забывай, юзаются ОБА контрола, оба. Поэтому фишка незачетна из-за необходимости юзать второй контрол. В виме же напротив - тебе нужно раз нажать Эскейп и соответственно тут это дает ощутимый эффект. Ведь эскейп очень неудобно искать вверху. И здесь эффект ощутим в разы. Например я могу точно спозиционироваться на контрол, а на эскейп далеко не всегда.
> А реальные примеры вместо "наши кабеля, самые кабелистые кабеля в мире" будут?
А реальные примеры я уже написал выше в треде, так что читай на здоровье :).
А вы батенька пустозвон... расскажи как бы ты нажимал Ctrl+y... ты же предлагаешь руку вниз опускать... посмотрю я на тебя как ты будешь раскорчивать пальцы (или у тебя пальцы 15 см длинной каждый?)... или ты это будешь нажимать двумя руками? тогда бугога да и только...
> или ты это будешь нажимать двумя руками? тогда бугога да и только...
Малыш, если ты смотришь на клавиатуру, то тут мне с тобой говорить нечего. Все взрослые дяди учат слепой набор. А в нем делать такие вещи одной рукой моветон. Поэтому незачет один.
А во вторых, взрослые дяди используют дворака, и в нем твоя задача решается одной рукой(хотя это опять же моветон), поэтому незачет номер два.
Смешно, когда люди говорят про скорость, не зная слепого набора и радуются в емаксе такому "улучшению".
Хочешь поговорить про клавиатуры? У меня было штук пять, пока наконец достал эту. Только пацанская она не столько из-за пингвинчика, сколько из-за Черри. Очень пацанский клик.
Ну, а учитывая то, что перед этим была Микрософт Нейчурал и тогда я пользовался виндой, получилось символично :).
Да нет, дорогой, печатаю я слепым методом, и не знаю я чего же там такого "моветонного" в том, что я нажимаю ctrl+y (теперь caps+y) одной (левой рукой) в то время как правой я перемещаюсь по тексту (нужно было вставить одно и то же в нескольких местах)... а фетешисты со своими нестандартными раскладками (двораки различные) идут лесом, и не привлекают к своим перверзиям добропорядочных граждан...
Как то не впечатляет, даже если нет, то реализуется тривиально. Для примера:
> Например тебе нужно удалить текст от текущей позиции до символа ...
(defun test(val)
(interactive "M")
(let ((start (point))
(end (search-forward val nil t nil)))
(if end
(delete-region start end))))
Тут во всей красе появляется одно из главных преймуществ - внутри полноценный и очень функциональный язык программирования LISP.
> Но в емаксе с пхп вообще плохо, там чтобы завести связку цсс, хтмл, пхп нужно выпить литру яду и три раза убить себя оп стенку.
Надо говорить не осилил, настраивается тривиально и достаточно просто (если перед этим прочитать мануал), в результате в одном буфере имеем кучу языков для отдельных фрагментов текста, причем полноценных (пр. в css-mode есть autocomplete для атрибутов и свойств)
> Если любишь Латех ...
Ну вот с этим точно никаких проблем нет, даже сложно представить что туда еще можно запихнуть и какой фичи не хватает - умеет даже подставлять на лету вместо формул отрендеренные картинки, что бы сразу было как будут выглядеть.
Меня вообщето более функциональные вещи интересовали, как то:
* Поддержка Version Control: пролнофункциональная и удобная, которая покрывает все аспекты работы и при использовании которой полностью отпадает надобность в каких либо еще мордах. Сталкивался с SVN, Perforce, Bitkeeper - выше всяких похвал.
* Стандартный интерфейс к Version Control и автоопределение текущей VC, команды "сравнить с превидущей версией" и "добавить в VC" работают автоматически для всех поддерживаемых VC (а это практически все) и не задают тупых вопросов.
* Работа с XML: nxml понимает схемы документа соответственно умеет на лету подсвечивать ошибки, работает autocomplete по схеме документа для тэгов и атрибутов, в комплекте идут схемы для XHTML, XSLT, XSLSchema и др.
* Прозрачная работа с удаленными файлами через SSH, SFTP, WebDav и пр. Можно открывать файл даже по такому адресу /ssh:/etc/passwd. Побочная фича - можно открывать файлы на локальной машине, но только от root /su:/etc/passwd. Можно ставить закладки на эти файлы. Работает autocomplete для hostname, username, password; в зависимостити от типа подключения данные берутся из ~/.netrc, ~/.ssh/known_hosts и др.
* Работа с БД. Для примера: при редактировании SQL можно выделить кусор кода и отправить его на выполнение в БД и посмотреть результаты.
* Совсем изврат:). Чтобы не отрываться от работы и одновременно быть в курсе что в мире творится можно запустить показ новостей из RSS в минибуфере (он в самом низу страницы находится).
* Проверка правописания: умеет делать на лету, автоматически определяет язык (указывать словарь в общем случае не нужно, сам поймет). Понимает что в исходниках проверять нужно только комментарии и строки внутри кода, а при использовании языков для разметки, эту разметку нужно игнорировать (HTML, LaTeX). Умеет Unicode.
LOL. Чувак, ты даже emacs tutorial не осилил похоже, раз про такие элементарные вещи говоришь, что это фишки... Это стандартные фичи для ЛЮБОГО нормального редактора. Естественно, всё это есть в emacs (причём для большинства описаных операций времени на нажатие кейбиндингов надо меньше, чем в vim, хотя для некоторых придётся конфиги поправить, например, аналог вимовского f показался мне неудобным, и я поправил поведение).
А по удобству конфигурации emacs всё же рвёт всех. M-x customize запусти, и увидишь. Репозиторий пакетов для emacs также есть (и не надо рыться по всему инету, что за чушь? emacswiki.org, а в xemacs вообще встроен package manager). lisp опять же намного более мощный язык, чем тот бейсик, который внутри vim-а (ну, если vim собрать с tcl, то может vim и не так сильно проиграет, но тут уже будет роялить тот факт, что для emacs дохрена стандартных библиотек на elisp, а для tcl-vim-а ничего подобного нет).
В общем, господа, мне конечно насрать на всё это, потому как известно, что на LOR-е 90% идиотов, однако ж товарищ Cris мягко говоря говорит неправду, так что всё же напишу сюда, раз уж прочитал.
PS: vim действительно хороший редактор, но он модален (читаем Раскина, пытаемся понять, почему это плохо).
PPS: у emacs ещё есть самый лучший мейлер всех времён и народов - gnus. У vim-а ничего подобного нету (а жаль, кстати).
PPPS: я в vim работал с 2000 по 2003 годы, написал несколько плагинов для него, и работать в нём умею, но в 2004 перешёл на emacs.
>> Например тебе нужно удалить текст от текущей позиции до символа ...
> (defun test(val) (interactive "M") (let ((start (point)) (end (search-forward val nil t nil))) (if end (delete-region start end))))
Это уже написано и работает из коробки, просто нажми M-z <символ>.
Причём универсальный модификатор (который C-u) тоже работает (в твоём коде не будет работать).
Наличие в емаксе почтовика - это конечно же весомый аргумент против вима..ах нуда, там ещё гамесы есть и тому подобное...осталось понять, зачем всё это счатье надо...
>> Например тебе нужно удалить текст от текущей позиции до символа ...
>(defun test(val) (interactive "M") (let ((start (point)) (end (search-forward val nil t nil))) (if end (delete-region start end))))
Угу, для реализации элементарной операции над текстом тебе пришлось выучить лисп. Кстати, а как насчёт текстовых объектов? Тоже писать свои функции на каждый чих? А потом ещё надо придумать на какие клавиатурные комбинации их биндить, да всё это запомнить. Очень удобный редактор, ничего не скажешь..
По функционалу и возможностям расширения emacs конечно уделывает vim,но обычно основная работа в редакторе - это написание и правка текста. И тут vim просто удобнее. А подсветка синтаксиса, автоматическая расстановка отступов, автодополнение, folding, code browsing - то есть те дополнительные возможности, которые в основном и нужны программисту, - всё это в виме работает не хуже, чем в емаксе.
наличие почтовика, а также наличие многих собственных вещей,
делают Емакс практически независимым от платформы. Вот я сейчас
сижу на компе на котором не настроена русская клавиатура, и это
совершенно не мешает мне писать по русски. Я и под виндой пользуюсь
емаксом в том числе и для почты, особенно при чтении больших списков
рассылки.