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

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

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

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

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

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

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

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

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

6 ответов

Решение

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

Также см. Smex для Ido, как функциональность для M-x

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

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

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

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

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

Активировать:

M-x iswitchb-mode

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

(iswitchb-mode)

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

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

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

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

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

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

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

Другие вопросы по тегам