treemacs 也支持键盘操作好吧
treemacs 主要的场景是多个 workspace 多个 project 的管理,可以通过切换 workspace 来切换展示不同的 project,比如公司和个人项目之间切换,比较方便。
但是我因为习惯了 vscode 中的 资源管理器 ( 就是那个树形文件导航 ) 的操作风格。主要操作大概是,浏览项目目录结构 ( 展开、收起文件夹 ),侧边打开 ( vscode 垂直分出第二屏并在第二屏上打开文件 ),copy&past,复制完整路径,重命名,删除,拖拽移动等等。
treemacs 默认的快捷键
- 侧边打开: o h (open horizontal)
- copy: y f (会直接提示要 paste 到的路径)
- 复制完整路径: y a
- 重命名: R
- 删除: d
- 拖拽移动:支持
这些快捷键记不住的话在 treemacs 里按 ?就可以看到提示了
提供一个其它思路,你可能需要快速查找org文件,但也不一定使用tree, 所以org-roam可能是好的选择,它可以快速按照文件名模糊匹配文件名。 如果org文件是以英文命名则可以通过几次键盘敲击就能找到所需要org文件。
是的,我现在就在测试 speedbar 和 neotree 到底哪个更合适一点。
我只需要一个浏览功能就够了。
ps: 按理说,speedbar 功能应该不比 neotree 差多少吧,speedbar 还内置,但 neotree 我看到用人的更多 neotree 的特点在哪?
主要是,我想要尽可能少地装插件以提高整个 emacs 的鲁棒性,而 treemacs 规模太大,我把握不住
ho 这个确实不错。我去 Linux 上体验一下。
我去试试 find-file-in-project, 正好可以和能检索内容的 color-rg 搭配。
zwwang
16
推荐一个Dired-sidebar,可以同时拥有treemacs 的外观和dired 的操作,也不会像treemacs 那样庞大
sidebar确实占用空间,我也不用。
我就是一整个屏幕显示文件,或者分割窗口看不同位置。文件管理没有太多需要,所以不怎么依赖emacs。
演示了一下: 展开文件夹 - 打开文件 - 复制路径 - 创建/复制/移动/重命名文件 - 搜索 + 预览 (比如预览项目里的图标啥的)
我自己只在头几次打开不熟悉的项目时用 sidebar 简单浏览下,熟悉以后就关了。其他时候主要用 dired-jump 。不过这个视频里演示的操作和在普通 dired buffer 里的操作是一样的,因为都是 dired。 也就是说,不需要你学两套东西。
这个包相对所有解决方案是最轻的。核心1200行+,其他的模块都是可选的,一般就百把行。
我能想到的 windows 上会遇到的问题是文件复制移动你要自己配置一下 dirvish-yank-methods。其他的应该和 linux 差不多。
1 个赞
看视频第一步是找到名为git
的子目录,我会用M-x find-directory-in-project-by-selected
(该命令来自find-file-in-project)一步完成找到目录并用dired打开。
那是我随便展开的目录,只是作为演示,不是刻意去找的。对于熟悉的项目,我大部分时候是直接用 fd 列出所有文件直接定位到文件,小部分时候是 dired-jump 然后前后上下几次找到想要的文件 (因为熟悉,也观察到当前文件和目标文件隔的很近,对我来说反而更快,省去了在 minibuffer 里过滤的步骤)。
对于从 vscode 这类工具过渡到 Emacs 的用户来说,我也挺能理解为什么他们会习惯从 sidebar 里面去找文件。因为在对一个项目不熟悉的时候,从目录树里找文件的方式虽然显得笨拙,但通过这个过程可以慢慢熟悉项目结构。另外就是复制移动文件的时候直接在目录树里操作比在 minibuffer 里手打路径显得直观得多。
dired-aux
在dired有两个窗口时,在一个窗口中的文件操作的target directory智能设置为另一个dired窗口的目录。我觉得比sidebar中一步步展开更高效。
这种 side-by-side 的操作逻辑对于习惯 total-commander 或者 vifm 这类文件管理器的人可能比较好用,但我一直习惯不了。更具体地说,它这个「高效」的条件极其苛刻。如果我恰好开着两个 dired 窗口,而且另一个窗口正好是那个靶子,那确实一步到位。可是我实际使用时几乎不会开两个 dired 窗口,更不用说这种其中一个窗口只是单纯作为一个靶子。dired dwim target 这套范式搞得我很痛苦,我全程都是先射箭再画靶子。
我觉得比sidebar中一步步展开更高效
这要分情况。如果那些目录本身就已经展开了,那就很快。重点在于,在原生dired 下有两个限制: 1. dired 只读取当前buffer 的 marks。2. dired 没有比较好的快速浏览历史目录的方式。我觉得 dired-dwim-target 更像是这些限制之下不得已的办法。不然一个窗口能解决的事情我为什么要开两个呢?
所以 dirvish 借鉴了 ranger 和 lf 里的文件操作,并且使 marks 全局共享,你可以在一个 buffer 标记文件,然后切到另一个 dired buffer, 按 yy 粘贴。完全免去管理窗口的麻烦。
我指的不是这种。是不通过 minibuffer 的,储存在当前会话内的「本地」历史记录。就类似现代文件管理器里的前进后退键。这个和quick-access 组合到一起,是心智负担最小的方式。
我视频里从项目目录到 HOME, 和从 fd 的搜索结果切换回来,就是用的这些命令。dirvish-history-go-forward/backward 和 dirvish-quick-access
见代码中的my-dired-directory-history
,我没实现前进后退,但dired的历史记录存储在该变量里。
你这个命令我也提供了一个,但我自己用的很少。因为我发现我是能不打字就不想打字。懒
silaoA
27
mark全局共享设计不错,除了yy复制,还支持哪些操作?按键和evil有没有冲突?
silaoA
28
有没有像楼下说的dirvish,支持mark全局共享?一个文件夹里标记,换到另一个文件夹里粘贴?
https://emacs-china.org/t/emacs/22306/22?u=silaoa
zwwang
29
这个我还真不确定,dired-sidebar的操作基本上沿用的dired,肯定还是dirivish功能更多一些