Полезные советы по Emacs: общие настройки

Модератор: /dev/random

Ответить
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Полезные советы по Emacs: общие настройки

Сообщение t.t »

Отдельные строки из ~/.emacs с краткими пояснениями. Общие вещи, применимые к работе в редакторе в целом.

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

Код: Выделить всё

(menu-bar-mode nil)
Выключаем меню. В консольной версии оно точно не нужно, да и в графической весьма сомнительно: для частых функций нужно назначить сочетания клавиш, а редкие эффективнее вызвать через M-x с автодополнением, чем вспоминать, где они запрятаны в меню.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

Код: Выделить всё

(line-number-mode t)
(column-number-mode t)
Включаем отображение номеров строки и колонки точки (позиции курсора) в строке состояния. Если включено что-то одно (по умолчанию обычно -- только номер строки), отображается в виде L15 или C18. Если включить оба числа, отображение меняется на такое:
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

Код: Выделить всё

(transient-mark-mode -1)
Выключаем режим "видимого выделения". Сделать это стоит по двум причинам.

Во-первых, при этом включается т.н. "постоянная метка" (persistent mark), которая в очень многих случах позволяет избежать лишних движений. Простейший пример: собрать в разных местах файла несколько строк текста и унести их куда-то все вместе. При вставке текста из kill-ring метка автоматически устанавливается в его начало, точка (курсор) сама собой оказывается в конце. Т.е. достаточно сместить курсор на одну строку вниз и нажать C-w (kill-region), чтобы получить в kill-ring его предыдущее содержимое (которое и было вставлено) плюс текущую строку. Другой пример: перед поиском метка автоматически устанавливается на место курсора. Это позволяет после поиска командой C-x C-x (exchange-point-and-mark) прыгать между "тем где были" и "тем где нашли".

А во-вторых, когда видимое выделение всё же нужно (например, для поиска-замены по заданной области, а не по всему буферу), его можно разово включить двойным нажатием C-Space (set-mark-command) вместо одинарного.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

Код: Выделить всё

(icomplete-mode t)
Режим интерактивного дополнения для мини-буфера. Проще показать, чем рассказать. Вот как выглядит мини-буфер в этом режиме при наборе команды replace-regexp (последовательно, по одной букве):

Код: Выделить всё

M-x r{e-builder,egexp-builder,mail-mode\
,mail-sort-by-correspondent,mail-summar\
y-by-topic,...}

Код: Выделить всё

M-x re{-builder,cover-session,cursive-e\
dit,ftex-index-phrases-mode,gexp-builde\
r,place-regexp,...}

Код: Выделить всё

M-x rep{eat,eat-complex-command,eat-mat\
ching-complex-command,lace-regexp,lace-\
string,ort-emacs-bug,...}

Код: Выделить всё

M-x repl(ace-){buffer-in-windows,rectan\
gle,regexp,string}
<tab>

Код: Выделить всё

M-x replace-{buffer-in-windows,rectangl\
e,regexp,string}

Код: Выделить всё

M-x replace-r(e){ctangle,gexp}
<tab>

Код: Выделить всё

M-x replace-re{ctangle,gexp}

Код: Выделить всё

M-x replace-reg(exp) [Matched]
При вводе имени функции или переменной после [Matched] уже можно жать ввод. При вводе, к примеру, имени буфера нужно дожать табуляцию (иначе создастся новый буфер для неполного имени):

Код: Выделить всё

M-x replace-regexp [Matched]
Работает не только для M-x, но и для любых команд, предполагающих ввод имён функций, переменных (в т.ч. C-h f, C-h v и пр.) или буферов (C-x b, C-x k и т.п.).

Казалось бы, мелочь, но на практике существенно ускоряет работу.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

Небольшое пояснение к предыдущему посту: варианты дополнения выводятся на всю ширину окна. Пишу с кпк, здесь при комфортном для постоянной работы размере шрифта ширина экрана 40 символов.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
.Serj.
Сообщения: 127
ОС: Gentoo, Win7

Re: Полезные советы по Emacs: общие настройки

Сообщение .Serj. »

Спасибо, помогло :)

Ещё есть ido-mode:

Код: Выделить всё

(require 'ido)
(setq ido-save-directory-list-file "~/.emacs.d/ido.last")
(ido-mode t)

действует наподобие icomplete, только предназначена для файлов, и между предлагаемыми вариантами можно переключаться клавишами ←→. Переход к «классическому» выбору файлов производится повторной комбинацией C-x C-f.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Полезные советы по Emacs: общие настройки

Сообщение watashiwa_daredeska »

t.t писал(а):
10.05.2010 18:49

Код: Выделить всё

(icomplete-mode t)
Хм... А я пользуюсь iswitchb, на первый взгляд то же самое, кроме того, что при выборе буфера не надо Tab жать при неполном имени.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

watashiwa_daredeska писал(а):
10.05.2010 20:25
t.t писал(а):
10.05.2010 18:49

Код: Выделить всё

(icomplete-mode t)
Хм... А я пользуюсь iswitchb, на первый взгляд то же самое, кроме того, что при выборе буфера не надо Tab жать при неполном имени.
Так он только для буферов, как я понял. Так что есть два возражения. С одной стороны, icomplete наиболее удобен именно для имён функций и переменных в M-x, C-h f/v и т.д. С другой стороны, есть упомянутый выше ido, который, как оказалось, работает и с буферами тоже, и при этом ощутимо удобнее, чем iswitchb.

P.S. Вообще, если ты не против, я бы хотел оставить в таких темах только собственно советы, а обсуждения отрезать в отдельную тему. Так что если у iswitchb есть другие премущества, опиши их, пожалуйста, без отсылки к этой дискуссии.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

По умолчанию при сохранении файла в emacs создаётся резервная копия в том же каталоге с добавленной к имени тильдой. Многие борются с этой проблемой путём полного отключения резервных копий. Но ведь в какой-то момено они могут оказаться полезны. Если вам не нравится, что резервные копии расползаются по всему дереву каталогов (и при этом вы не хотите отключать их совсем), предлагаю решение:

Код: Выделить всё

(when (not (file-directory-p "~/.backup"))
  (make-directory "~/.backup"))
(if (file-directory-p "~/.backup")
    (setq backup-directory-alist '(("." . "~/.backup"))))
Теперь все резервные копии будут сохраняться в каталоге ~/.backup, независимо от типа файлов.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

Когда вы вносите изменения в ~/.emacs, их можно тут же применить, без перезапуска редактора. Чтобы выполнить весь файл, используйте команду

Код: Выделить всё

M-x eval-buffer


Кроме того, можно выполнить только выбранные команды. Выбрать их можно с помощью transient-mark (напомню про одноразовую активацию transient-mark двойным нажатием C-Space), а выполнить такой командой:

Код: Выделить всё

M-x eval-region
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
KI11obyte
Сообщения: 46
ОС: Gentoo

Re: Полезные советы по Emacs: общие настройки

Сообщение KI11obyte »

спасибо, очень полезно.
хотелось бы еще чего-нибудь по перемещению по тексту/между буферами/...
C лишним байтом все значительно сложнее

[Gentoo on Asus EEEPC 901]
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

KI11obyte писал(а):
12.05.2010 08:15
спасибо, очень полезно.
Рад, что полезно: значит не зря стараюсь.

KI11obyte писал(а):
12.05.2010 08:15
хотелось бы еще чего-нибудь по перемещению по тексту
Будет.

KI11obyte писал(а):
12.05.2010 08:15
/между буферами/...
Что Вы имеете ввиду? Переключение между буферами? Перемещение текста между буферами? Или что-то другое? В двух озвученных случаях никаких особых хитростей нет.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Полезные советы по Emacs: общие настройки

Сообщение kamre »

t.t писал(а):
10.05.2010 22:25
Теперь все резервные копии будут сохраняться в каталоге ~/.backup, независимо от типа файлов.


А если я редактирую два файла с одинаковым именем: src/lib/CMakeLists.txt и src/proj/CMakeLists.txt, то что тогда будет сохраняться в качестве резервной копии?

Еще хотелось бы узнать про навигацию по дереву исходников. Как можно заставить emacs просканировать ее и быстро переходить к любому файлу только по имени? Чтобы как с ido при C-x-f, только для всех исходников в дереве сразу.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

kamre писал(а):
12.05.2010 13:47
t.t писал(а):
10.05.2010 22:25
Теперь все резервные копии будут сохраняться в каталоге ~/.backup, независимо от типа файлов.
А если я редактирую два файла с одинаковым именем: src/lib/CMakeLists.txt и src/proj/CMakeLists.txt, то что тогда будет сохраняться в качестве резервной копии?
А Вы попробуйте. (:

Файл сохраняется с именем, равным абсолютному пути, в котором "/" зменены на "!".
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
KI11obyte
Сообщения: 46
ОС: Gentoo

Re: Полезные советы по Emacs: общие настройки

Сообщение KI11obyte »

t.t писал(а):
12.05.2010 10:44
KI11obyte писал(а):
12.05.2010 08:15
/между буферами/...
Что Вы имеете ввиду? Переключение между буферами? Перемещение текста между буферами? Или что-то другое? В двух озвученных случаях никаких особых хитростей нет.

На самом деле просто хитрости работы с несколькими буферами (ну и конечно с их содержимым).
C лишним байтом все значительно сложнее

[Gentoo on Asus EEEPC 901]
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

KI11obyte писал(а):
12.05.2010 14:51
t.t писал(а):
12.05.2010 10:44
KI11obyte писал(а):
12.05.2010 08:15
/между буферами/...
Что Вы имеете ввиду? Переключение между буферами? Перемещение текста между буферами? Или что-то другое? В двух озвученных случаях никаких особых хитростей нет.
На самом деле просто хитрости работы с несколькими буферами (ну и конечно с их содержимым).
А какие там хитрости? Переключение между буферами, копирование или перещение текста -- это всё как будто достаточно просто. Конкретизируйте, пожалуйста.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
KI11obyte
Сообщения: 46
ОС: Gentoo

Re: Полезные советы по Emacs: общие настройки

Сообщение KI11obyte »

t.t писал(а):
12.05.2010 18:12
А какие там хитрости? Переключение между буферами, копирование или перещение текста -- это всё как будто достаточно просто. Конкретизируйте, пожалуйста.

Ну если бы знал то не спрашивал. Считайте что это был вопрос "а нет ли там хитростей?"
C лишним байтом все значительно сложнее

[Gentoo on Asus EEEPC 901]
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

KI11obyte писал(а):
13.05.2010 00:58
t.t писал(а):
12.05.2010 18:12
А какие там хитрости? Переключение между буферами, копирование или перещение текста -- это всё как будто достаточно просто. Конкретизируйте, пожалуйста.
Ну если бы знал то не спрашивал. Считайте что это был вопрос "а нет ли там хитростей?"
Какие-то наверняка есть, но так навскидку они в голову не приходят. Если придут, напишу обязательно.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
trancefer
Сообщения: 485
Статус: $>
ОС: Arch, Slackware, OpenBSD

Re: Полезные советы по Emacs: общие настройки

Сообщение trancefer »

Годный тред. Жду продолжения :)

От себя добавлю. Включение пользовательской цветовой схемы:

Код: Выделить всё

(require 'color-theme)
(color-theme-initialize)
(color-theme-emacs-21)

Название темы определяется в данном случае последней строкой, в моем случае (color-theme-emacs-21). В базовой поставке Emacs идет несколько десятков тем.
Спасибо сказали:
Аватара пользователя
.Serj.
Сообщения: 127
ОС: Gentoo, Win7

Re: Полезные советы по Emacs: общие настройки

Сообщение .Serj. »

trancefer писал(а):
16.05.2010 00:03
Годный тред. Жду продолжения :)

От себя добавлю. Включение пользовательской цветовой схемы:

Код: Выделить всё

(require 'color-theme)
(color-theme-initialize)
(color-theme-emacs-21)

Название темы определяется в данном случае последней строкой, в моем случае (color-theme-emacs-21). В базовой поставке Emacs идет несколько десятков тем.

Которые просматриваются и выбираются командой M-x color-theme-select
Спасибо сказали:
N1ke
Сообщения: 31
ОС: Gentoo

Re: Полезные советы по Emacs: общие настройки

Сообщение N1ke »

Код: Выделить всё

(menu-bar-mode nil)
Выключаем меню. В консольной версии оно точно не нужно, да и в графической весьма сомнительно: для частых функций нужно назначить сочетания клавиш, а редкие эффективнее вызвать через M-x с автодополнением, чем вспоминать, где они запрятаны в меню.

Дополню если автор топика не против. В GUI версиях emacs сверху еще есть совершенно бесполезный туулбар.
Он отключается командой:

Код: Выделить всё

(tool-bar-mode 0)


И да, вопрос который мучал меня по началу:
Как можно задать на определенную клавишу команду, которую приходиться набирать по M-x?

Код: Выделить всё

(global-set-key [f9] 'compile)

Например компиляция.

Код: Выделить всё

(show-paren-mode t)

Подсветка парных скобок. Очень удобно при редактировании конфигов.
В некоторых темах может не работать.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Полезные советы по Emacs: общие настройки

Сообщение t.t »

N1ke писал(а):
29.07.2010 06:09
Дополню если автор топика не против.
Конечно не против. Что ж мне, одному стараться? (: Только за. Кстати, тема что-то подзабылась; спасибо, что напомнили.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
GRGR
Сообщения: 1
ОС: Win7

Re: Полезные советы по Emacs: общие настройки

Сообщение GRGR »

Что-то затихла веточка.
Попробую быть полезным :)
(global-set-key "\C-f" 're-builder)
Очень удобно искать по коду.
(global-set-key [f12] 'kill-buffer-and-window)
Практически постоянно это использую.
(setq ring-bell-function 'ignore)
отключаем все сигналы
Немножко написал. Думаю, многие это знают, но вдруг кому-то покажется полезным.
Спасибо сказали:
cheryoleg
Сообщения: 3
ОС: Linux

Re: Полезные советы по Emacs: общие настройки

Сообщение cheryoleg »

кстати а никто не подскажет как буфер *Messages* приклеить к одному какому-нибудь месту и что бы еще там история команд отображалась а то на этапе освоения непонятно куда смотреть
Спасибо сказали:
Ответить