如何用counsel-find-file找到文件后在新建的水平窗口显示

我之前使用Emacs自带的find-file,定义了以下函数绑定到快捷键上。

(defun my/find-file-horizontally (filename &optional wildcards)
  (interactive
   (find-file-read-args "Find file in horizontal window: "
			(confirm-nonexistent-file-or-buffer)))
   (let ((value (find-file-noselect filename nil nil wildcards))
	 (target (split-window-horizontally)))
     (select-window target)
     (if (listp value)
	 (mapcar 'pop-to-buffer-same-window (nreverse value))
       (pop-to-buffer-same-window value))))

现在使用counsel-find-file,有没有好的思路可以实现上述功能。

1 个赞

如果是只需要 other windows 打开,默认应该是 ctrl-o j

如果就想竖直分割,可以用 ivy-set-actions,参见 spacemacs 配置

能不能像自带 find-file 或者 find-file-other-window 一样按一次快捷键打开 minibuffer 输入文件名称后,按 打开窗口,而不是再按一次 C-o j 。

激活 ivy-modecounsel-mode 之后自动就会把 find-file-other-window 用 ivy 打开,然后你参照 find-file-other-window 写个 find-file-horizontal-window 就行?