vim - 从 vim 中的书签目录模糊设置工作目录

标签 vim vim-fzf

有时我需要将当前工作目录更改为不同的位置(例如,在不同的项目中搜索)。例如,这可以通过 lcd/path/to/dir 来实现。 然而,写出路径通常太慢,而且我经常发现自己使用相同的位置。 理想情况下,我有一个模糊查找器,例如 fzf弹出预设的书签目录列表以供选择。模糊搜索将允许快速选择和更改工作目录(显然不更改调用它的当前文件)。

很快,我正在寻找与 fzf-marks 等效的内容。 vim 工具。

最佳答案

做了更多的事情reading ,事实上我已经找到了一种将 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 jump function 中所做的那样。并使其可模糊搜索,以便快速访问定义函数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 窗口,其中包含可供选择的书签目录。

用例(我经常发现自己):

假设我已经开始在某处编辑文件(例如在 ~/myproject 中),但需要搜索 (:grep) 包含单词 的句子>foo 我知道它位于 /home/user/project1/code 内的一个文件中。我从来不太记得project1的路径,只是它的路径中有code。因此,我已将其添加为书签(见上文)。

以前,必须在某处查找路径并将其输入 vim,即输入 :grep foo/home/user/project1/code。现在,工作速度更快,如下所示:

:FM 在 vi​​m 中,调出已添加书签的目录列表,输入 code 的位,例如co 快速限制搜索:

enter image description here

选择第一行会将当前目录设置为project1(可以通过:pwd确认),但保留编辑后的文件不变。现在,:grep! foo 确实在project1 中递归搜索。

完成搜索后,我可以将工作目录重置为当前文件目录 :cd %:h 或其根目录 rooter : :根

关于vim - 从 vim 中的书签目录模糊设置工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60253115/

相关文章:

function - VIM:按函数名称排序

Scilab 的 Vim 代码折叠

vim - 如何在vim中替换指定的单词

vim - 我怎样才能让vim只在空白处换行?

vim - 在 vim 中的特定拆分中打开文件(使用 fzf)

vim - 如何使用 FZF 和 Ag 在 vi​​m 中搜索特定文件类型/扩展名的文本?

vim - 类似FZF的方式快速切换目录?在 Vim FZF 中包含隐藏文件?

linux - 多列终端多路复用器?