我有一个emacs的副本,我在拇指驱动器的几台不同的(Windows)计算机上使用,我想知道是否有可能创建一些类似于bash别名或符号链接的内容emacs的?我可以在find-file中使用的东西是我正在寻找的主要内容,例如:C-f <some link>
会把我带到某个地方。目前我每次到新计算机时都要添加一个新的defun,这只是一种痛苦,我会发誓我已经在某个地方看过这个,但几个月的谷歌搜索都没有发现任何东西
我现在所拥有的是:
(defun go-awesome ()
"Find my way to my work home"
(interactive)
(find-file "c:/cygwin/home/awesome"))
但是,对于仅仅访问一个我经常访问半文件的文件来说,只是访问一个相当hacky,这感觉有点过头了。设置新文件需要付出很多努力。
但最大的问题在于我认为它不适合我的工作流程。当我想访问一个文件时,我总是C-x C-f
,如果我意识到“嘿,我正在工作”,那么我必须C-g M-x go-awesome
。也许更清楚的是,如果我说我希望能够做一些相当于ln -s /some/awesome/dir
但是内置于emacs的内容,而不是内置到操作系统中,以便C-x C-f ~/awesome/some/sub/dir
可以工作在窗户或其他任何地方。
答案 0 :(得分:11)
我不清楚你要求的是什么。我将常用文件存储在我的.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
(必要时加载)。
这就是你要找的东西吗?
答案 1 :(得分:2)
如果您想要某个功能的别名,请使用defalias
:
(defalias 'nuke 'delete-trailing-whitespace)
但如果你抱怨Emacs的功能名称太长,你应该调查partial-completion-mode
。随着打开,
M-x d-t-w [RET]
将运行delete-trailing-whitespace
。
答案 2 :(得分:2)
这就是你需要的 -
定义与您想要重新访问的上下文相对应的书签。使用Bookmark+,这不一定只是一个文件。它也可以是整个Emacs桌面或带有标记(已保存)的Dired缓冲区,一组其他书签,......
将Icicles与书签+ 一起使用。每当您使用 C-x C-f 等访问文件时,您也可以visit a file or directory bookmark(完成书签名称)。当您在迷你缓冲区中完成文件名时,只需点击 C-x m 即可。
答案 3 :(得分:0)
我想要的是打开一个给定的文件,只需一个命令即可定义一个键盘宏。 这个宏打开文件〜/ .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
答案 4 :(得分:0)
我在下面有这个设置。例如,如果我想在我的桌面上找到一个文件(D:/桌面),我输入F3 j F3,无论我开始使用什么路径,迷你缓冲区现在都说“D:\ Desktop \”而我' m准备在桌面上键入任何文件名。我将快捷方式设置为j,k,l,i b / c,这些快捷方式靠近我左手的位置,但是使用此设置,任何最多4个字母的快捷方式都可以。所以你可以为你的“awsome”文件添加一个条目,比如说“敬畏”,你可以输入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))))
答案 5 :(得分:0)
这个blog entry几乎完全定义我想要的东西,基本上让我在迷你缓冲区中点击$
,然后向我提供我可以跳转到的书签列表。我可能会调整它,以便如果我指定一个文件书签,它会将我带到文件而不是目录,但这是一个特别的问题,特别是考虑到书签的文件往往位于列表的顶部。
答案 6 :(得分:-1)
我将此移至原始问题,但我将其留在此处,因为人们已经回复了
这比我的方式更好,但我觉得可能存在的东西会取代,例如:
(defun nuke ()
"alias delete-trailing-whitespace"
(interactive)
(delete-trailing-whitespace))
并且感觉不那么hacky,并且它实际上正在做它本来应该做的事情,而不是做一些非常重的东西,因为感觉应该是非常轻的东西。
这有意义吗?
但是你对寄存器的分配实际上可能比我正在寻找的更好。