vim - 从vim中的书签目录模糊设置工作目录
问题描述
有时我需要将当前工作目录更改为不同的位置(例如在不同的项目中搜索)。例如,这可以通过lcd /path/to/dir
. 然而,写出路径通常太慢,而且我经常发现自己使用相同的位置。理想情况下,我会有一个模糊的查找器,例如fzf弹出一个预设的书签目录列表以供选择。模糊搜索将允许快速选择和更改工作目录(显然不会更改调用它的当前文件)。
不久,我正在寻找与 vim 的fzf-marks工具等效的工具。
解决方案
在阅读了更多内容之后,我实际上找到了一种将 fzf-marks 集成到 vim 中的方法(在没有 fzf-marks 的情况下也可以很好地工作)。
您所需要的只是一个列出书签目录的文件,并带有一个指向它的变量,例如FZF_MARKS_FILE="${HOME}/.fzf-marks
该文件的格式如下cat $FZF_MARKS_FILE
:
project1 : /home/user/project1/code
project2 : /home/user/project2/code
vimswapdir : /home/user/.local/share/nvim/swap
rlibsloc : /home/user/R/x86_64-pc-linux-gnu-library
trash : /home/user/.local/share/Trash/files
vim-plugins : /home/user/.config/nvim/plugged
现在的想法是加载和解析它,就像它在 fzf-marks跳转函数中所做的那样,并使其模糊搜索以快速访问定义一个函数FM
:
command! -bang FM call fzf#run(fzf#wrap({'source': 'cat ~/.fzf-marks | sed "s/.*: \(.*\)$/\1/" | sed "s#~#${HOME}#"', 'sink': 'lcd'}, <bang>0))
现在调用:FM
会弹出一个 fzf 窗口,其中包含可供选择的书签目录。
用例(我经常发现自己):
假设我已经开始在某处(例如 in ~/myproject
)编辑文件,但需要搜索 ( ) 以查找包含我知道在文件:grep
中的单词的句子。我从来都不记得 project1 的路径,只是它的路径中有。出于这个原因,我已经为它添加了书签(见上文)。foo
/home/user/project1/code
code
以前,必须在某处查找路径并将其输入 vim 即输入:grep foo /home/user/project1/code
. 现在这可以更快地工作,如下所示:
:FM
在 vim 中,调出书签目录列表,键入code
, 例如co
快速限制搜索:
选择第一行确实将当前目录设置为project1
(可以通过 确认:pwd
),但保留编辑后的文件。现在,:grep! foo
确实在 project1 中递归搜索。
完成搜索后,我可以将工作目录重置为当前文件目录:cd %:h
或使用rooter : :Rooter
。
推荐阅读
- sql - Netezza 在 SQL 中为当天的第一条记录值添加新字段
- sql - 实现 Redshift 合并/更新操作的最有效方法是什么
- objective-c - 在 Objective-c 或 Swift 中,每第 n 次循环迭代做一些事情
- python - 使用进度条停止功能不起作用
- python - 在 pandas 上使用 pivot 会引入不需要的 NaN
- javascript - 当使用 useState 中的 setState 函数作为 useEffect 中的参数时,为什么不需要编写回调
- c++ - CMake 不同存储库中的多个库
- python-3.x - 使用python连接两个CSV文件
- javascript - 创建宏计算器 - 尝试添加下拉菜单时获得 NaN 结果
- javascript - 如何使用 Yup 遍历对象的键