在emacs中创build别名?

我有一个emacs的副本,我在一个不同的(Windows)电脑从一个拇指驱动器上使用,我想知道是否有可能创build一些类似于emacs中的bash别名或符号链接的东西? 在find文件中我可以使用的东西是我正在寻找的主要东西,例如: Cf <some link>会带我到某个地方。 目前我每次到新电脑都要添加一个新的defun,这真是一种痛苦,我会发誓我已经看到了这个地方,但是几个月的谷歌search没有任何结果。

我现在所拥有的东西是这样的:

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

但是,这种感觉过分而且过分,只是为了访问一个相当古怪的文件而访问我经常访问的文件。 而且它需要很多努力来build立一个新的文件。

尽pipe如此,我认为最大的问题是它不适合我的工作stream程。 当我想访问一个文件,我总是做Cx Cf ,如果我意识到“嘿,我在工作”,那么我必须Cg Mx go-awesome 。 如果我说我想能够做一些相当于ln -s /some/awesome/dir但是内部的emacs,而不是内置在OS中的东西,那么可能会更加清楚,所以Cx Cf ~/awesome/some/sub/dir可以在Windows或其他地方工作。

我不清楚你要求什么。 我将常用的文件存储在我的.emacs中的寄存器中:

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

然后我可以跳转到一个jump-to-registerCx rj )的文件:

例如,“ Cx rjc ”把我带到c:/data/common.txt (如果需要的话加载它)。

那是你在找什么?

如果你想要一个函数的别名,你可以使用defalias

 (defalias 'nuke 'delete-trailing-whitespace) 

但是如果你抱怨Emacs的函数名太长,你应该看看partial-completion-mode 。 随着打开,

 Mx dtw [RET] 

将运行delete-trailing-whitespace

这是你需要的东西 –

  • 定义对应于您要重访的上下文的书签。 使用书签+这不一定只是一个文件。 它也可以是一个完整的Emacs桌面或一个Dired缓冲区,其标记(保存),一组其他书签,…

  • 书签一起使用冰柱 。 无论何时使用Cx Cf等访问文件,还可以访问文件或目录书签 (对书签名称完成)。 当您在minibuffer中完成文件名时,只需点击Cx m即可

我想要的是打开一个给定的文件只需要一个命令,你可以定义一个键盘宏。 这个宏打开文件〜/ .bashrc

  Cx( # start defining the macro Cx Cf ~/.bashrc Cx ) # end definition 

然后你可以命名这个宏

 Mx name-last-kbd-macro visitbashrc #give it a name 

那么你可以通过名称Mx visitbashrc来调用它

您可以将定义保存到一个文件,例如.emacs,通过访问这个文件并在其中插入定义

 Mx insert-kbd-macro 

我有下面这个设置。 因此,例如,如果我想在桌面上找到一个文件(D:\ Desktop),我输入F3 j F3,不管我开始的路径是什么,小缓冲区现在说“D:\ Desktop \”,准备在桌面上输入任何文件名。 我把我的快捷方式设置为j,k,l,ib / c这些靠近我左手的地方,但是使用这个设置,任何4个字母的快捷键都可以工作。 所以你可以为你的“awsome”文件添加一个条目,比如说“awe”,然后你可以输入F3 awe F3来访问你的文件。 不知道这是你在找什么; 但这节省了我很多打字;)

 (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)))) 

这个博客条目几乎确切地定义了我想要的内容,基本上让我在minibuffer中打$ ,然后给我一个我可以跳转到的书签列表。 我可能会调整它,所以如果我指定一个文件书签,它会把我带到文件而不是目录,但是这是一个问题,特别是考虑到书签文件往往是在列表的顶部。

我把这个问题转移到原来的问题上,但是我把它留在这里,因为人们已经回应了

这比我得到的更好,但是我觉得可能存在的东西是可以取代的,例如:

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

并且觉得自己不那么傻了,就像实际上正在做着自己应该做的事情一样,而不是做一些真正沉重的东西,感觉应该是真的很轻。

那有意义吗?

不过,你的分配寄存器实际上可能比我要找的要好。