Emacs: помогите мне разобраться с управлением файлами / буфером - PullRequest
30 голосов
/ 30 июня 2010

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

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

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

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

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

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

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

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

Ответы [ 6 ]

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

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

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

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

  4. q связан с функцией 'выход' во многих основных режимах. Обычно он закапывает буфер, а не убивает его, но я, конечно, нахожу это хорошим.

Чтобы немного подробнее остановиться на # 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, создавать фильтры и группы для различных типов задач и легко переключаться между ними.

17 голосов
/ 30 июня 2010

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

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

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

4 голосов
/ 30 июня 2010

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

Для активации:

M-x iswitchb-mode

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

(iswitchb-mode)

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

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

4 голосов
/ 30 июня 2010

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

2 голосов
/ 01 июля 2010

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

  • ibuffer ;это обновленное буферное меню (Cx Cb)
  • ido , которое дает вам более мощное автозаполнение для переключения через буферы.Это своего рода «лучший iswitchb».

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

2 голосов
/ 30 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...