Emacs: помогите мне разобраться с управлением файлами / буфером
Последние три года я использую emacs для всех своих потребностей в редактировании текста. Когда я нахожусь в одном файле, работаю над кодом или еще чем-то, я довольно эффективен. С двумя файлами я могу "Cx b RET" между ними, и я в порядке. Однако всякий раз, когда мне нужно работать над более чем двумя файлами одновременно, я склонен заблудиться.
Вот некоторые из проблем, над которыми я бы хотел поработать:
Я забыл, как называются некоторые из моих буферов, но я не понимаю, почему Cx Cb разбивает мое окно на два буфера и выходит из мини-буфера. Конечно, я могу переключать буферы и выбирать буфер для посещения, но это кажется не интуитивным и оставляет мне два открытых буфера.
Когда я посещаю каталог, а не файл, у меня есть удобный список всех файлов и каталогов. Я обычно хочу сделать одну из двух вещей с этим: 1) Открыть один файл и никогда больше не видеть этот буфер ИЛИ 2) Открыть кучу файлов и никогда больше не видеть этот буфер. Я действительно не знаю, как это сделать, так как перемещение точки в файл и нажатие клавиши return не выполняет ни одну из этих вещей.
Я знаю, что мои буферы не похожи на вкладки, но у меня есть склонность хотеть прокручивать их, чтобы найти то, что я хочу. Я не знаю каких-либо привязок клавиш для этого, но я бы хотел, чтобы это было Mn / Mp или подобное. Опять же, это может быть ужасно неэффективным способом переключения буферов.
Когда я открываю интерактивную справку любого рода (например, в 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
берет меня к другому окну.
привязывать
C-x C-b
вibuffer
, Это лучшее средство вывода списка буферов с множеством расширенных функций, и его поведение по умолчанию - заменить текущий буфер списком буферов, а затем скрыть список, когда вы выбираете буфер (оставляя вместо вновь выбранного буфера вместо оригинал).Вы можете просто использовать
C-x b
конечно, ввести свой выбор в мини-буфер; однако завершение табуляции (которое необходимо, чтобы сделать эту опцию жизнеспособной, IMO) действительно временно открывает новое окно, и в этот момент я думаю, что вы могли бы также ознакомиться с чем-то большим количеством функций.использование
a
вместоRET
при выборе из заправил. Это убивает устаревший буфер вместо того, чтобы оставить его позади.C-h m
в любом буфере вам покажут справку по его основному режиму (за которым следует справка по второстепенным режимам), и вы сможете прочитать обо всех доступных привязках зашифрованных клавиш.http://www.emacswiki.org/cgi-bin/wiki/TabBarMode? (редактировать: я предпочитаю ответ Реми для этого, но TabBarMode даст вам визуальный элемент табуляции, если вы особенно заинтересованы в этом.)
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).