Отобразить путь к файлу в строке состояния
GNU Emacs 23.1.1
Мне интересно, есть ли способ показать путь к файлу в строке состояния, а не только имя файла.
Мне нужно открыть много файлов во многих каталогах, и иногда я забываю, в какой директории они находятся. Простое отображение некоторого пути в строке состояния, если это возможно.
Иногда мои пути к каталогам очень длинные.
например
/projects/clientserver/trunk/src/client/client.c
как это в строке состояния, просто отобразите последние два каталога.
/src/client/client.c
Большое спасибо за любые предложения,
Ответы
Ответ 1
То, что вы запрашиваете, - это изменить имя буфера. Вы можете настроить, как называются буферы, используя uniquify. Он имеет несколько методов для создания уникальных имен буферов. Самый очевидный выбор для вас - это "вперед", который дает именно то, что вы просите, - префикс имени буфера частью пути в качестве префикса.
Однако это имеет потенциально нежелательный побочный эффект. Обычно имена буфера становятся уникальными, добавляя суффикс. Когда вы делаете "c-x b" для переключения буферов, если вы наберете "foo", и у вас есть "foo" и "foo < 1 > ", вам будет показан общий префикс и ему будет предоставлена возможность предоставить суффикс. Итак, "c-x b foo" позволит вам выполнить завершение, когда вы увидите список всех буферов "foo".
Если вы используете uniqueify в режиме "вперед", у вас будут имена буфера формы "bar/foo" и "baz/foo". Теперь "c-x b foo" не приведет вас к буфере foo или не позволит выполнить завершение, чтобы получить список буферов foo. Вы должны помнить префикс, который добавляется к каждому имени буфера.
Мой совет - использовать "обратный" режим uniqify, который использует путь к каталогу в качестве суффикса. Это, возможно, немного менее интуитивно, но проще использовать на практике. Итак, теперь у вас будут такие буферы, как "foo\bar" и "foo\baz", что дает вам преимущество в том, что вы можете сделать "cx b foo" и получить список всех буферов с именем файла "foo".
Итак, добавьте это в ваш .emacs файл и посмотрите, нравится ли вам поведение:
(require 'uniquify)
(setq uniquify-buffer-name-style 'reverse)
Ответ 2
Если вам нравится видеть это как заголовок кадра, а не в строке состояния, что я лично предпочитаю, потому что он менее загроможден и полезен также при переключении окон с помощью Alt + TAB и т.д., тогда вы можете добавить что-то вроде следующего в ваш .emacs
файл без установки каких-либо расширений:
;; Disable loading of "default.el" at startup,
;; in Fedora all it does is fix window title which I rather configure differently
(setq inhibit-default-init t)
;; SHOW FILE PATH IN FRAME TITLE
(setq-default frame-title-format "%b (%f)")
%b
отобразит имя буфера как обычно, и %f
полный путь к файлу. Вы можете, конечно, изменить порядок, добавить текст между ними, удалить %b
и т.д.
Ответ 3
Это хорошо работает для меня для установки полного пути в кадре:
(setq frame-title-format
'(:eval
(if buffer-file-name
(replace-regexp-in-string
"\\\\" "/"
(replace-regexp-in-string
(regexp-quote (getenv "HOME")) "~"
(convert-standard-filename buffer-file-name)))
(buffer-name))))
Ответ 4
Uniquify должен в значительной степени делать то, что вы хотите.
Ответ 5
См. документацию для переменной "Кадр заголовка формата"
Он укажет вам на переменную "Режим строки формата"
в котором указаны параметры настройки заголовка