Emacs: помогите мне понять управление файлами/буферами

Я использую emacs для всех моих потребностей в редактировании текста в течение последних трех лет. Когда я в одном файле, работая над кодом или еще что-то, я достаточно эффективен. С двумя файлами я могу "C-x b RET" между ними, и я все хорошо. Однако, когда мне нужно работать над более чем двумя файлами за раз, я, как правило, теряюсь.

Вот некоторые из проблем, над которыми я хотел бы работать:

  • Я забыл, что вызываются некоторые из моих буферов, но я не понимаю, почему C-x C-b разбивает мое окно на два буфера и выходит из мини-буфера. Конечно, я могу переключать буферы и выбирать буфер для посещения, но это кажется неинтуитивным и оставляет меня с двумя буферами.

  • Когда я посещаю каталог, а не файл, у меня есть удобный список всех файлов и каталогов. Обычно я хочу сделать одну из двух вещей: 1) открыть один файл и никогда больше не видеть этот буфер ИЛИ 2) открыть кучу файлов и больше не видеть этот буфер. Я действительно не знаю, как это сделать, так как перемещение точки в файл и возврат влево не делают ни одной из этих вещей.

  • Я знаю, что мои буферы не похожи на вкладки, но у меня есть желание прокрутить их, чтобы найти то, что я хочу. Я не знаю никаких привязок клавиш для этого, но мне бы хотелось, чтобы это был M-n/M-p или тому подобное. Опять же, это может быть ужасно неэффективным способом переключения буферов.

  • Когда я открываю интерактивную помощь любого типа (например, в ESS), у меня есть привычка переключаться обратно в буфер, в котором я работал, и использовать C-x 1, чтобы вернуться в один буфер. Однако, когда я это делаю, буфер справки зависает в моем списке буферов, что еще больше сбивает меня с толку. Я знаю, что могу переключиться на этот буфер, убить его, переключиться обратно, а затем вернуться к одному буферу, но это кажется неправильным.

То, как я до сих пор занимался этим, подразумевает использование диспетчера оконных панелей и нескольких окон emacs в разных рабочих пространствах, а не на самом деле узнать лучший способ управления несколькими файлами в emacs. Я не обязательно хочу менять emacs, чтобы лучше соответствовать моим потребностям (хотя я открыт для этого, если он соответствует тому, что я собираюсь сказать) вместо этого я хотел бы задуматься над процессом обработки файлов/буферизирует то, что делает emacs, и как я могу быть более эффективным с ним.

Приветствуется любой ответ, который поможет мне понять правильный путь, или более эффективный способ управления моими буферами или файлами.

Ответ 1

Думаю, вам действительно понравится Ido для работы с несколькими буферами, имена которых вы точно не можете запомнить. Когда вы вводите C-x b, он отображает список открытых буферов в большинстве используемых заказов. Когда вы вводите некоторые символы в имени буфера, список фильтруется. Символы, которые вы вводите, не должны быть на попрошайничестве имени или смежных. Используя кнопки C-f, C-b или клавиши со стрелками влево/вправо, циклически перемещаются по выбору буфера.

Также см. Smex для подобных функций Ido для M-x

Закрытие окон осуществляется с помощью C-x 0. Умышленное разбиение окна выполняется с помощью C-x 2 для горизонтального, C-x 3 для вертикали. Мне нравится эта функция, так как она позволяет мне одновременно показывать тестовый и производственный код. C-x o приведет меня в другое окно.

Ответ 2

  • Привяжите C-x C-b к ibuffer. Это лучшее средство для перечисления буферов со многими расширенными функциями, и его поведение по умолчанию заключается в замене текущего буфера списком буферов, а затем похоронить список при выборе буфера (оставив вас с вновь выбранным буфером вместо оригинал один).

    Вы можете просто использовать C-x b, чтобы ввести свой выбор в мини-буфер, конечно; однако выполнение табуляции (которое необходимо для того, чтобы сделать это жизнеспособным вариантом, IMO) временно открывает новое окно, и в этот момент я думаю, вы могли бы также ознакомиться с чем-то с большим количеством функций.

  • Используйте a вместо RET при выборе из dired. Это убивает шумный буфер вместо того, чтобы оставить его позади. C-h m в любом буфере покажет вам справку для основного режима (за ней следует помощь для второстепенных режимов), и вы можете прочитать о всех доступных привязанных к ним привязках клавиш.

  • http://www.emacswiki.org/cgi-bin/wiki/TabBarMode? (edit: Я предпочитаю Rémi ответ для этого, но TabBarMode даст вам элемент визуальной вкладки, если вы особенно заинтересованы в этом.)

  • q привязан к функции "quit" в большом количестве основных режимов. Как правило, он зарывает буфер, а не убивает его, но я, конечно, считаю, что это хорошо.

Чтобы немного разобраться в # 1, у ibuffer есть много приятных функций, а M-x customize-group ibuffer RET предоставит вам некоторое представление о том, как вы можете настроить его по своему вкусу.

Кроме того, вы можете отфильтровать список буферов по многим критериям (опять же, используйте C-h m, чтобы просмотреть страницу справки), а затем сгенерируйте определение "группы" из текущих фильтров и сохраните свои настраиваемые фильтры и группы для будущего использование.

Например:

  • / f ^/var/www/ RET: список буфера фильтров для отображения только имен файлов, начинающихся с /var/www/.
  • / s Web filters RET: имя и сохранить активный фильтр, установленный в файл инициализации.
  • / g Web development RET: создать именованную группу из активных фильтров.
  • / S My groups RET: имя и сохранить определения групп в файле инициализации.
  • / r Web filters RET: вызывать фильтры веб-фильтров.
  • / R My groups RET: вызывать группы "Мои группы".
  • RET для имени группы, чтобы свернуть или развернуть ее.
  • C-k и C-y, чтобы убить и уничтожить группы, чтобы их упорядочить.
  • C-h m для получения дополнительной информации...

Таким образом, вы можете запустить один экземпляр Emacs и создать фильтры и группы для разных задач и легко переключаться между ними.

Ответ 3

Я использую C-x right (или C-x C-right) и C-x left (или C-x C-right), чтобы перейти к следующему и предыдущему буферам. Я больше не возражаю против нескольких буферов, которые лежат в Emacs, но вы можете использовать k в списке буфера, чтобы убить буфер, который вы больше не используете.

Ответ 4

Вы также можете попробовать режим Iswitchb, который обеспечивает автоматическое заполнение имен буфера при переключении буферов через C-x b.

Чтобы активировать:

M-x iswitchb-mode

Или добавьте в файл .emacs:

(iswitchb-mode)

Он похож на Ido mode для переключения буфера, но немного более легкий.

Кроме того, если вам нужен более настраиваемый список ваших буферов, используйте M-x bs-show в качестве альтернативы C-x C-b. В этом буфере введите ?, чтобы получить список действий, которые вы можете выполнить.

Ответ 5

Я думаю, что первое наиболее полезное расширение для перелистывания буферов - Anything. Он позволяет вам набирать часть имени буфера (или файла!), И он будет определять, что вы хотите. Я отскакиваю C-x b на все для буферов. Это делает жизнь намного лучше.

Ответ 6

Как всегда, есть много способов помочь вам в этом; это немного зависит от личных предпочтений, что лучше всего работает, вот некоторые ссылки с объяснениями:

  • ibuffer; который представляет собой обновленное меню буфера (C-x C-b)
  • ido, который позволяет вам иметь более мощную автозаполнение для переключения буферов. Это своего рода "лучший iswitchb".

Этих двух достаточно для меня; но вы также можете быть заинтересованы в tabbar-mode, который дает вам рудиментарные вкладки (например, у них есть Firefox).