Emacs: какова хорошая тактика для навигации по каталогам и открытия файлов?

На прошлой неделе, разозлившись (снова) из-за того, что мне приходилось работать с разными IDE для R и Perl, ни одна из которых мне не нравится и которую я использую в достаточной мере, чтобы чувствовать себя по-настоящему комфортно, я решил попробовать Emacs. Это решение было принято с моей стороны не без некоторого трепета. В основном я использую Perl с cperl и R с ESS. Моя среда - это 64-разрядная версия Windows 7 Ultimate, и я использую v23.4.1, и я думаю, что это то, что пакет ESS был установлен от моего имени.

Прошла почти неделя, и пока это было на удивление безболезненно, не более сложным, чем любая другая важная часть программного обеспечения. Я переназначил свою клавишу ctrl на caps-lock, изменил папки по умолчанию, возился с .emacs и сделал некоторые дополнения, такие как автоматическая установка, ясниппет, цветовая тема, сосульки и некоторые другие. Ясно, что есть очень сложные вещи. Вдобавок, конечно, некоторые функции базового Emacs сразу же очень мощные и полезные, такие как поиск вверх и вниз. В целом я был приятно удивлен и успокоен.

Одна вещь, которая оказалась более грубой, чем я ожидал, - это процесс поиска и открытия файлов. После беглого чтения различных руководств у меня было это изображение квази-магического местоположения файла и автозаполнения имени файла.Основные каталоги в моей настройке имеют такие пути, как g: / roaming / code / perl или g: / roaming / code / R /, но мне часто нужно переходить на совершенно разные пути, такие как g: / pricedata / support files / sector / project01 / и так далее.

В настоящее время я старательно удаляю путь к файлу, когда мне нужно выбрать другую вилку, а затем использую автозаполнение, чтобы углубиться в эту ветвь файловой системы. Это как бы возвращает меня к запуску оболочки bash на Amiga двадцать лет назад.

Чего я ожидал? Что-то вроде (используя приведенный выше пример) ввода «project01», чтобы сразу перейти в папку внизу пути. По какой-то причине у меня в голове возникла идея, что Emacs будет предварительно загружать каталоги. Так что, возможно, это было нереально.

Я предполагаю, что мои трудности, вероятно, проистекают из моего собственного незнания, а не из-за структурного недостатка Emacs, что приводит к моим вопросам. Не могу пожаловаться на недостаток документации; скорее имеется обширная информация о том, что она разбросана довольно бессистемно. У Icicles похожая проблема - во всяком случае, их слишком много.

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

2) При дополнительной настройке можно ли использовать автозаполнение для поиска файлов в (скажем) проекте01 непосредственно выше, добавляя префиксы с помощью подстановочных знаков и т. Д. ? На чем мне следует сосредоточиться, чтобы стать здесь более эффективным? Разве я не использую возможности надстроек, таких как сосульки и т. Д.?

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

27
задан SlowLearner 22 February 2012 в 14:44
поделиться

2 ответа

В дополнение к IDO и recetf вы можете использовать следующие методы:

  1. Открыть каталог рекурсивно.

    (defun op-i:dired (rec)
      "customized dired: will display directory recursively when called with an argument"
      (interactive "P")
      (let ((dir (car (find-file-read-args "Dired: " nil))) 
            (opts (if rec (read-string "options: " "-lhAR") "-lhA")))
        (if (file-directory-p dir) (dired dir opts))))
    
    (define-key (current-global-map) (kbd "C-x C-d") 'op-i:dired)
    

    Затем вы можете перемещаться в буфере каталога, как и в любом другом буфере, используя (подстановочный) поиск.

  2. Используйте регистры Emacs для указания на часто используемые каталоги. Вы можете инициализировать их в вашем .emacs

    (set-register ?0 (cons 'file "c:/path/to/my-project0"))
    (set-register ?1 (cons 'file "c:/path/to/my-project1"))
    

    , а затем перейти к регистрации, используя C-x r j

7
ответ дан 28 November 2019 в 05:15
поделиться

Другие возможности:

  1. Закладки. Если вы используете Закладка + , то вы также можете:

    • Закладка Dired буферов, которая запоминает их вставленные поддиректории, их маркировки и пропуски файлов , Вы можете иметь закладку, которая открывает Dired для определенного набора файлов, которые не обязательно должны находиться в том же каталоге или даже в том же дереве каталогов.

    • В Dired вы можете нажать клавишу, чтобы создать отдельную закладку для каждого отмеченного файла или подкаталога.

    • Закладка файлов автоматически (автофайлы).

    • Помечать закладки и файлы (закладки автофайлов) произвольными текстовыми метками. (Теги могут быть даже нетекстовыми объектами Lisp). Используйте теги для организации, поиска и т. Д. Различных категорий закладок.

    • Закладка наборов закладок или файлов закладок или рабочих столов Emacs. Перейдите к такой закладке, чтобы восстановить заданное состояние / контекст проекта.

  2. Сосульки .

    • Определяйте временные или постоянные наборы файлов на лету, даже из разных каталогов. Управляйте файлами в наборе различными способами. (Используйте наборы файлов Emacs, менее мощные, точно так же.) Заполняйте по именам файлов из таких сохраненных наборов при любой команде завершения, а не только при поиске файла.

    • Действовать по-разному в файлах кандидатов во время завершения.

    • Поиск отмеченных объектов или сохраненных наборов файлов или буферов.

  3. Dired + .

    • Дополнительная навигация , включая i отскок между списком подкаталогов и строкой подкаталога в родительском списке.

Ссылки:

5
ответ дан 28 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: