Софт

индекс
91,16

Открой двери Emacs в окнах, или как собрать приемлемый .emacs под Windows

Доброе время суток, %username%, давно хотел поделиться с тобой своим emacs файлом.

Дело в том что, мое обращение в веру было омрачено неудобностью и может быть даже не приемлемостью работу с емаксом без предварительной настройки. Тем более, что под Windows емакс выглядит чарующе дико, и пугает большинство программеров и админов до смерти. Я этот путь посвящения в тайны емакса, я по-моему прошел, поэтому хочу расписать свой config емакса, может быть кто-то подчеркнет что-то новое, а кто-то еще и обратится в нашу веру. Сразу предупреждаю, что это, фактически, сборная солянка, которую я строил в течении последнего полугода работы в этом редакторе.

1. Под виндой некорректно работает кодировка поэтому, есть это
(set-language-environment 'UTF-8)
(setq default-input-method 'russian-computer)
(set-selection-coding-system 'windows-1251)
(set-default-coding-systems 'windows-1251)
(prefer-coding-system 'windows-1251)


2. Настройка приятных сердцу цветов
(custom-set-faces
'(default ((t (:inherit nil :stipple nil :background "gray17" :foreground "snow" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 98 :width normal :foundry "outline" :family "Courier New"))))
'(cursor ((t (:background "peach puff"))))
'(font-lock-comment-delimiter-face ((default (:inherit font-lock-comment-face)) (((class color) (min-colors 16)) (:background "green"))))
'(font-lock-comment-face ((nil nil)))
'(font-lock-doc-face ((t (:inherit font-lock-string-face :background "black")))))

(set-background-color "#333333")
(set-foreground-color "#ffffff")


3. Связывание модов по расширениям файлов, можете продолжить для себя
(autoload 'javascript-mode "javascript" nil t)
(setq auto-mode-alist
(append
'(
( "\\.el$". emacs-lisp-mode)
( ".emacs". emacs-lisp-mode)
( "\\.py$". python-mode)
( "\\.pyw$". python-mode)
( "\\.html$". sgml-mode)
( "\\.xml$". sgml-mode)
( "\\.js$". javascript-mode)
( "\\.cpp$". c++-mode)
( "\\.h$". c++-mode)
)))
(global-font-lock-mode 1) ;; эта хитрая заточка, включает разум емакса для подсветки синтаксиса


4. Еще кучка хитрых заточек
(tool-bar-mode -1) ;; выключить тубар
(setq scroll-step 1) ;; шаг =1
(setq default-tab-width 4) ;; табы по 4
(global-hl-line-mode 1) ;; подсветка строки с курсором
(windmove-default-keybindings 'meta) ;;
(fset 'yes-or-no-p 'y-or-n-p) ;; просим емакс быть кратким
(iswitchb-mode 1) ;; режим переключения буферов
(desktop-save-mode t) ;; сохранять буфера после закрытия


5. Это надпись здесь, что легко переходить в конфиг-файл
(defun load-config ()
(interactive)
(find-file "~/.emacs"))
(global-set-key "\C-x/" 'load-config)


6. Шорт-каты для облегчения жизни в тяжелых офисных условиях
(global-set-key [(control tab)] 'previous-buffer)
(global-set-key [(control shift tab)] 'next-buffer)
(global-set-key [f4] 'revert-buffer)
(global-set-key [f5] 'call-last-kbd-macro)
(global-set-key [f8] 'linum-mode) ;; без этой штуки жить нельзя
(global-set-key [f11] 'ibuffer)
(global-set-key [f10] 'bookmark-bmenu-list) ;; Это покруче, Ctrl-D в тотал командере, сохраняйте букмарки везде (C-xrm) и открывайте их.


7. И еще шорт-катов
(global-set-key [?\C-'] 'toggle-truncate-lines) ;; режим word-wrap по-православному
(global-set-key "\C-cr" 'rename-buffer)
(global-set-key "\C-c!" 'revert-buffer)
(global-set-key "\C-z" 'undo) ;; по умолчанию емакс уходит в бакграунд
(global-set-key "\C-c\C-r" 'replace-string)


8. Это уже просто от лени.
(add-hook 'javascript-mode-hook 'linum-mode 'toggle-truncate-lines)
(add-hook 'python-mode-hook 'linum-mode)


_________
Текст подготовлен в ХабраРедакторе
+18
6 февраля 2010, 11:00
21

комментарии (32)

0
Filippok #
А я вот уже джва года хочу емакс с риббонами и прочими рюшечками. Ну не вписывается его гуй в мой Aero…
–6
zeroed #
Под виндовс есть far со всеми своими рюшечками =)
+13
BegiBober #
Far manager — это Emacs для windows — это в мемориз )))
0
Paul #
Ну вы блин сравнили. Или это такая попытка потроллить, а я в полночь плохо соображаю? :)
+9
alexott #
большинство строчек из auto-mode-alist давно не нужно — емакс имеет соответствующие настройки, которые регистрируются автоматом. использовать sgml-mode для XML — тоже давно не нужно, в составе емакса давно есть nxml-mode. для html лучше использовать nxhtml-mode, который доступен отдельно… для яваскрипта лучше js2-mode, или (если правильно помню caffeine-mode) — недавно была дискуссия в emacs-devel на тему того, что лучше использовать…
0
muslimov #
возможно, вы правы. буду смотреть
0
bobry #
не подскажете где можно обнаружить caffeine-mode?
почему то гугл про него ничего не знает
0
bobry #
видимо речь о espresso-mode
если кому интересно
0
alexott #
www.nongnu.org/espresso/ — перепутал ;-)
0
wzrd #
в последнее время чаще сижу на семерочке (так получилось, не по собственному желанию, хотя начинаю влюблятся в нее), ну естественно без емакса как-то не привычно чтоли) столкнулся с проблемой запуска emacsclientw.exe, решил её тупо, запускаю runemacs.exe при загрузке, сворачиваю, прописываю emacsclientw.exe как редактор для totalcommander и на душе спокойнее) хоть как-то вовлек emacs в свою виндосовскую жизнь) это я так решил написать с чем сталкивался, раз уж пошел разговор о emacs и windows)
0
muslimov #
вы хитрец, но идейка хорошая.
–2
Nesp #
А нормальный текстовый редактор там уже появился? (:
+2
wzrd #
нет, никак не могут добавить нормальный гуи с блэкджэком и шлюхами. не любит столлмэн азартные игры и голых баб…
0
muslimov #
в 73.1 обещают и тех, и других — главное быть способным тогда.
0
wzrd #
главное пережить столлмэна)
0
naryl #
0
HOBAA #
А можно сборкой выложить?
Желательно портабельное с установленными плагинами и готовыми конфигами. Если ещё под веб разработку заточенное — вообще супер.
0
muslimov #
скачайте емакс 23.1, и вставьте все что написано в файл — .emacs.
Правда должен разочаровать вас, пока не разберетесь что к чему, и не научитесь играть другими клавишами на клавиатуре — ничего не выйдет.
0
HOBAA #
сборка отсюда: ftp.gnu.org/pub/gnu/emacs/windows/ под 7кой даже не запускатеся :(
0
VlK #
Я бы посоветовал иначе начинать :-D

1) Просто голый емакс

2) десяток туториалов по настройке и простым приемам.

3) и постепенно собирать свой собственный .emacs

В индивидуальности — кайф и фигуры высшего пилотажа.

Кстати. Первый из советов. Помогает во всех программах в принципе. Если обнаружите как перебиндить Ctrl на Caps Lock под виндой — сразу делайте. Во-первых, это удобней даже при нажатии Ctrl-c, Ctrl-v; во-вторых, мизинец при наборе команд не устает.
0
evgenyk #
Да, это путь воина. Причем упущен главный пункт: Воин должен считать, что он уже умер, тогда эмоции не мешают ему.
0
HOBAA #
собственно по этому и была просьба выложить рабочую настроенную версию
0
Sveolon #
Вот во всех подобных советах я одного не понимаю: вы что, только одним контролом пользуетесь из двух? Гораздо удобнее мизинцем одной руки нажимать Control, а другой рукой — клавишу с буквой. Так и всякие руководства по постановке рук для десятипальцевого набора говорят… Ну, поменяю я левый контрол с капсом, и что это изменит по сути? Только путаница лишняя.
Капс лок должен раскладку переключать, ИМХО.
0
VlK #
Никто ничего не должен :) У меня, например, правый winkey переключает раскладку.

Я перескакиваю в зависимости от сочетания клавиш, ближе они к левой стороне клавиатуры или правой. Народ, не изучавший специально слепую печать — те часто жмут левой рукой сочетания типа C-w, C-x, C-z, C-a, C-e.

Когда-то и я донажимался до онемевшего мизинца. А caps lock в роли Ctrl очень естественно лежит прямо под мизинцем левой руки, палец двигать не надо.
+3
m52 #
Ваш конфиг, чарующе бесполезен :) Все равно делать нечего, пробегусь по нему:

> (set-language-environment 'UTF-8)

Для емакса в виндусе полезна переменная file-name-coding-system, установленная в cp1251, иначе кириллические имена файлов будут вопросами.

> (set-background-color "#333333")

Половина настроек цветовой темы в custom-set-faces, половина вручную. Зачем? Если уж начал писать, то писать в одном месте.

> ( "\\.el$". emacs-lisp-mode)

ВНЕЗАПНО, это и все ниже и так есть по умолчанию, незачем засирать конфиг бесполезным.

> (setq scroll-step 1)

Сказал раз, говори и два:

;; smart scrolling
(setq scroll-step 1; плавный скроллинг
scroll-conservatively 100000; не прыгать на середину страницы при скроллинге
scroll-margin 5; начинать промотку страницы за 5 сток до края
scroll-preserve-screen-position t); без этого не будет нормально работать страница вниз/вверх

> [(control tab)] "\C-cr"

Все нормальные люди давно уже используют унифицированный способ записи кейбиндингов. Примеры:

(global-set-key (kbd «C-S-») 'shrink-window-horizontally)
(global-set-key (kbd «S-») 'my-scroll-up)
(global-set-key (kbd «C-w») 'kill-region-or-backward-word)
(global-set-key (kbd «C-c C-p») 'paredit-mode)

Парсер, конечно, заменил кавычки :)

> linum-mode) ;; без этой штуки жить нельзя

Только расскажите юному падавану, что с этой штукой при скроллинге у вас периодически курсор будет прыгать на середину страницы :)

Ну и, конечно, не указана куча must have опций и настроек.
0
Vasily_Pupkin #
Не знаю как можно жить без recenter'инга ^_^ Но тем не менее. На что вы предлагаете заменить linum?
0
m52 #
Даже если тебе чего-то очень хочется, ты можешь без этого обойтись © В общем случае, предлагаю вообще не использовать нумерацию строк, не очень-то оно и нужно.
0
solvadore #
Так рассказали бы об этих недостающих must have настройках…
0
nuit #
–1
muslimov #
> сказал а, скажи и б
давай мастхав лист, и свой .emacs
0
evgenyk #
Было бы интересно услышать, кто для каких задач использует Emacs и какими фичами пользуется. Просто любопытства/статистики ради. Вот я использую так:
Платформа: Linux/Ubuntu
Задачи:
— Кодинг (С++, Bash, Python, Perl.....)
— Кастомизированная рабочая система/оргнанайзер (Дневник, заметки, списки задач, управление проектами)
— Редактор конфигов
Фичи (самые часто употребляемые):
— workspaces (как screen)
— org-mode (для органайзера)
— таблицы/электронные таблицы из org-mode
— tramp — редактирование через сетевые протоколы
— shell (ansi-term)
0
naryl #
ecb, cedet (для C++ и erlang), gnus.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.