Создать псевдонимы в Emacs? - PullRequest
8 голосов
/ 07 октября 2008

У меня есть копия emacs, которую я использую на нескольких разных компьютерах (windows) с большого пальца, и мне интересно, возможно ли создать что-то, что эквивалентно псевдониму или символической ссылке bash в Emacs? Что-то, что я мог бы использовать в find-file, - это главное, что я ищу, например: C-f <some link> куда-нибудь меня приведет. В настоящее время я должен добавлять новый defun каждый раз, когда добираюсь до нового компьютера, что просто отчасти боль, и я бы клянусь Я видел это где-то, но месяцы поиска в Google ничего не дали.

То, что у меня сейчас есть, это что-то вроде:

(defun go-awesome ()
   "Find my way to my work home"
   (interactive)
   (find-file "c:/cygwin/home/awesome"))

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

Самая большая проблема, на мой взгляд, заключается в том, что она не вписывается в мой рабочий процесс. Когда я хочу посетить файл, я всегда делаю C-x C-f, и если я понимаю, что «эй, я на работе», тогда мне нужно C-g M-x go-awesome. Возможно, было бы более понятно, если бы я сказал, что хотел бы иметь возможность делать что-то, что эквивалентно ln -s /some/awesome/dir, но является внутренним по отношению к emacs, а не встроено в ОС, так что C-x C-f ~/awesome/some/sub/dir будет работать в Windows или где угодно еще.

Ответы [ 7 ]

11 голосов
/ 07 октября 2008

Мне не совсем понятно, о чем вы просите. Я храню свои часто используемые файлы в регистрах в моем .emacs:

(set-register ?c '(file . "c:/data/common.txt"))
(set-register ?f '(file . "c:/data/frequent.txt"))

Затем я могу перейти к файлу с помощью jump-to-register (C-x r j):

Например, «C-x r j c» переводит меня к c:/data/common.txt (при необходимости загружая его).

Это то, что вы ищете?

2 голосов
/ 02 ноября 2011

Вот что вам нужно -

  • Определите закладки, которые соответствуют контекстам, к которым вы хотите вернуться. С Закладка + это не должен быть просто файл. Это также может быть целый рабочий стол Emacs или буфер Dired с его маркировками (сохранены), набор других закладок, ...

  • Используйте Сосульки вместе с Bookmark + . Всякий раз, когда вы используете C-x C-f и т. Д. Для посещения файла, вы также можете посетить закладку файла или каталога (завершено напротив названия закладки). Просто нажмите C-x m , когда вы находитесь в минибуфере для завершения имени файла.

2 голосов
/ 07 октября 2008

Если вы хотите использовать псевдоним для функции, вы используете defalias:

(defalias 'nuke 'delete-trailing-whitespace)

Но если вы жалуетесь на то, что имена функций Emacs слишком длинные, вам следует заглянуть в partial-completion-mode. При включенном

M-x d-t-w [RET]

будет работать delete-trailing-whitespace.

0 голосов
/ 20 декабря 2009

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

0 голосов
/ 13 декабря 2008

У меня есть эта настройка ниже. Так, например, если я хочу найти файл на своем рабочем столе (D: / Desktop), я набираю F3 j F3, и независимо от того, с какого пути я начал, минибуфер теперь говорит «D: \ Desktop \», и ​​я Я готов ввести любое имя файла на рабочем столе. Я установил свой ярлык на j, k, l, i b / c, они находятся близко к левой руке, но с этой настройкой все ярлыки до 4 букв будут работать. Таким образом, вы можете добавить запись для вашего «удивительного» файла, скажем «awe», и вы можете ввести F3 awe F3 enter, чтобы посетить ваш файл. Не знаю, действительно ли это то, что вы ищете; но это спасло меня от набора текста;)

(global-set-key [f3] 'ffap)

;comcplete shortcut in minibuffer
(define-key minibuffer-local-completion-map (kbd "<f3>")
                      'complete-minibuffer-path) 

(defun complete-minibuffer-path ()
  "Extension to the complete word facility of the minibuffer by
replacing matching strings to a specific path"
  (interactive)
  (setq found t)
  (cond
     ; just add new entries if needed; shortcut up to 4 letters will work
     ((looking-back "j" 5 nil) (setq directory "D:/Desktop/"))
     ((looking-back "k" 5 nil) (setq directory "D:/Documents/"))
     ((looking-back "l" 5 nil) (setq directory home-dir))
     ((looking-back "i" 5 nil) (setq directory "D:/Programs/"))
     (t (setq found nil)))
  (cond (found (beginning-of-line)
                (kill-line)
                (insert directory))
         (t (minibuffer-complete)))) 
0 голосов
/ 14 октября 2008

Я хочу открыть данный файл с помощью команды, которую вы можете определить макрос клавиатуры. Этот макрос открывает файл ~ / .bashrc

 C-x( # start defining the macro
 C-x C-f ~/.bashrc   
 C-x )  # end definition

Тогда вы можете назвать этот макрос

M-x name-last-kbd-macro
visitbashrc   #give it a name

тогда вы можете назвать его по имени M-x visitbashrc

Вы можете сохранить определение в файл, например, .emacs, посетив этот файл. и вставив в него определение, с

M-x insert-kbd-macro
0 голосов
/ 07 октября 2008

Я перенес это в исходный вопрос, но я оставляю его здесь, потому что люди уже ответили на него

Это намного лучше, чем то, что у меня есть, но то, что я чувствую, вероятно, существует, это то, что заменит, например:

(defun nuke ()
   "alias delete-trailing-whitespace"
   (interactive)
   (delete-trailing-whitespace))

и чувствую себя менее хакерским, и будто он действительно делал то, что должен был делать, вместо того, чтобы делать что-то действительно тяжелое для того, что кажется чем-то действительно легким.

Имеет ли это смысл?

Ваше назначение для регистров может быть даже лучше, чем то, что я ищу.

...