缓冲区之间的Emacs选项卡
有没有一种方法可以在缓冲区之间切换,而无需通过 缓冲区列表,还是写入要切换到的缓冲区的名称?更具体地说,我想知道emacs是否可以在缓冲区之间切换,就像它在notepad++emacs 22.1和更高的缓冲区之间的Emacs选项卡,emacs,elisp,Emacs,Elisp,有没有一种方法可以在缓冲区之间切换,而无需通过 缓冲区列表,还是写入要切换到的缓冲区的名称?更具体地说,我想知道emacs是否可以在缓冲区之间切换,就像它在notepad++emacs 22.1和更高的上一个缓冲区(C-x)和下一个缓冲区(C-x)命令中的工作方式一样 这两个命令可以通过使用添加到较旧的Emacsen中。我从来没有使用过C-x或C-x,因为如果我想循环超过一个缓冲区,我发现重复它们很麻烦,因此,我刚刚编写了两个函数,允许您继续切换到next/previous buffer,如果最
上一个缓冲区(C-x
)和下一个缓冲区(C-x
)命令中的工作方式一样
这两个命令可以通过使用添加到较旧的Emacsen中。我从来没有使用过C-x或C-x,因为如果我想循环超过一个缓冲区,我发现重复它们很麻烦,因此,我刚刚编写了两个函数,允许您继续切换到next/previous buffer
,如果最后一个命令也是next/previous buffer
命令
e、 g.C-x会带你回到三个缓冲区,向前一个,然后再向后一个
我假设&通常绑定到向前/向后单词
,并将它们显式地称为回退
(defun my-forward-word-or-buffer-or-windows (&optional arg)
"Enable <C-left> to call next-buffer if the last command was
next-buffer or previous-buffer, and winner-redo if the last
command was winner-undo or winner-redo."
(interactive "p")
(cond ((memq last-command (list 'next-buffer 'previous-buffer))
(progn (next-buffer)
(setq this-command 'next-buffer)))
((memq last-command (list 'winner-redo 'winner-undo))
(progn (winner-redo)
(setq this-command 'winner-redo)))
(t ;else
(progn (forward-word arg)
(setq this-command 'forward-word)))))
(defun my-backward-word-or-buffer-or-windows (&optional arg)
"Enable <C-left> to call previous-buffer if the last command
was next-buffer or previous-buffer, and winner-undo if the last
command was winner-undo or winner-redo."
(interactive "p")
(cond ((memq last-command (list 'next-buffer 'previous-buffer))
(progn (previous-buffer)
(setq this-command 'previous-buffer)))
((memq last-command (list 'winner-redo 'winner-undo))
(progn (winner-undo)
(setq this-command 'winner-undo)))
(t ;else
(progn (backward-word arg)
(setq this-command 'backward-word)))))
(global-set-key (kbd "<C-left>") 'my-backward-word-or-buffer-or-windows)
(global-set-key (kbd "<C-right>") 'my-forward-word-or-buffer-or-windows)
(取消我的转发字、缓冲区或窗口(&可选参数)
“如果最后一个命令是
下一个缓冲区或上一个缓冲区,如果最后一个缓冲区
命令是winner undo或winner redo。“
(交互式“p”)
(cond((memq last命令(列出“下一个缓冲区”和上一个缓冲区))
(progn(下一个缓冲区)
(设置此命令“下一个缓冲区”))
((memq最后一个命令(列出“winner redo”winner undo))
(程序(优胜者重做)
(设置此命令“winner redo”))
(t)其他
(progn(正向字arg)
(设置此命令“转发单词(()())”)
(取消我的向后字、缓冲区或窗口(&可选参数)
“如果最后一个命令
是下一个缓冲区还是上一个缓冲区,如果最后一个缓冲区
命令是winner undo或winner redo。“
(交互式“p”)
(cond((memq last命令(列出“下一个缓冲区”和上一个缓冲区))
(progn(上一个缓冲区)
(设置此命令的“上一个缓冲区”))
((memq最后一个命令(列出“winner redo”winner undo))
(程序(优胜者撤销)
(设置此命令的“撤消”))
(t)其他
(progn(向后单词arg)
(设置此命令“向后单词(()())”)
(全局设置键(kbd“”)“我的反向字或缓冲区或窗口)
(全局设置键(kbd“”)“我的前向字或缓冲区或窗口)
(我自己使用进行缓冲区切换,但是…)
如果要重复上一个命令任意次数,只需使用C-x z。。。在这种情况下,例如,C-x左C-x z z
如果这太麻烦了,可以像其他人建议的那样,将(下一个|上一个)-buffer
绑定到其他可重复的键
但可重复使用的钥匙需求量很大。如果你不想浪费任何时间,你甚至可以把这样的命令放在前缀键上,这样,例如,你可以做,例如,C-x左。。。下面是一个技巧(摘自代码):
(取消我的重复命令(命令)
“重复命令。”
(let((重复消息功能“忽略”)
(setq最后一个可重复命令)
(重复零次)
(取消我的下一个任意重复(arg);'C-x right'
“不管怎样,跳到第n个。
N默认为1,表示下一个值。
简单的‘C-u’意思是从头开始(不要重复)。”
(交互式“P”)
(要求“重复”)
(我的重复命令“下一步”)
(定义键ctl-x-map[右]'我的下一个重复
尽管以下建议确实使用了缓冲区列表、常春藤(或头盔)和邪恶,但我认为这是一种很好的方法,几乎等同于使用SpaceMac时常用的Ctrl-TAB
方式(包括更新缓冲区列表)。
当然,这些命令可以根据您的个人配置进行调整(香草Emacs)
(邪恶全局设置键“运动(kbd)”)“常春藤开关缓冲区)
(邪恶全局设置键“插入(kbd)”)“常春藤开关缓冲区)
(定义键常春藤模式图(kbd“”)“常春藤下一行并呼叫)
(定义键常春藤模式映射(kbd“”)“常春藤上一行和呼叫)
或等效于头盔
(evil-global-set-key 'motion (kbd "<C-tab>") 'helm-buffers-list)
(evil-global-set-key 'motion (kbd "<C-iso-lefttab>") 'helm-buffers-list)
(define-key helm-map (kbd "<C-tab>") 'helm-follow-action-forward)
(define-key helm-map (kbd "<C-iso-lefttab>") 'helm-follow-action-backward)
(邪恶全局设置键“运动(kbd)”)“头盔缓冲区列表)
(邪恶全局设置键“运动(kbd)”)“舵缓冲列表”
(定义关键舵图(kbd“”)“舵随动前进”)
(定义关键舵地图(kbd“”)“向后舵跟随动作”)
最后一个命令的按键串在我的键盘上表示Ctrl-Shift-tab
。您可以找到与C-h k C-S-tab
一起使用的按键串
实际上,在释放
后,您仍然需要按RET
或C-l
对于使用头盔的邪恶用户,一个可能更好的选择是将Helm buffers list
绑定到C-j
和C-k
,然后将Helm follow mode persistent
设置为t
,并在Helm buffers list
中使用C-C-f
激活Helm follow mode
。现在您可以进行switch(和预览)带有C-j
和C-k
的缓冲区是的,请参阅我回答中第一个链接中的在两个最近使用的缓冲区之间切换一节。这个问题也会被问到(并且回答不同)关于超级用户:我尝试了很多,但随着时间的推移,我最终停止了一个简单的iflip包,你会发现几乎没有比“C-x b”+ido模式更好的切换了
(evil-global-set-key 'motion (kbd "<C-tab>") 'ivy-switch-buffer)
(evil-global-set-key 'insert (kbd "<C-iso-lefttab>") 'ivy-switch-buffer)
(define-key ivy-mode-map (kbd "<C-tab>") 'ivy-next-line-and-call)
(define-key ivy-mode-map (kbd "<C-iso-lefttab>") 'ivy-previous-line-and-call)
(evil-global-set-key 'motion (kbd "<C-tab>") 'helm-buffers-list)
(evil-global-set-key 'motion (kbd "<C-iso-lefttab>") 'helm-buffers-list)
(define-key helm-map (kbd "<C-tab>") 'helm-follow-action-forward)
(define-key helm-map (kbd "<C-iso-lefttab>") 'helm-follow-action-backward)