标签: fzf

fzf:ctlr-r 未触发命令行上的历史搜索

我已经在 debian 11 (bullseye) 上安装了 fzf。当我输入 ctrl-r 来触发历史搜索时,没有任何反应。在我的 Mac 上运行良好。我正在使用 zsh。

更新:尝试添加bindkey '^r' fzf-history-widget到 .zshrc 但我只是收到“没有这样的小部件”错误。

fzf --版本报告 0.24(开发)

fzf

14
推荐指数
1
解决办法
2万
查看次数

使用 fzf(模糊查找器)在终端中自动触发历史搜索

是否可以在 zsh shell 中自动触发 fzf 历史搜索?

在这个视频中,用户点击“Ctrl+r”开始历史搜索,然后开始输入。当我开始输入任何内容时,是否可以自动启动历史搜索?或者,是否可以配置 zsh 以便新提示始终以“Ctrl + r”模式启动?

command-history zsh shell-script oh-my-zsh fzf

7
推荐指数
2
解决办法
4343
查看次数

如何将正则表达式与 fzf 一起使用?

例如,在 vim 中,您可以搜索类似 , 的名称test1test2或者test9\n按/\\<test\\d\\>。我想要这个“功能”,例如查找文件名test<num>中包含该单词的文件名。我尝试了一下:

\n

在此输入图像描述

\n

但正如你所看到的,它不起作用。

\n

这是我的 FZF 环境变量:

\n
    \n
  • $FZF_DEFAULT_COMMAND\nrg --files --hidden --glob "!.git/*"

    \n
  • \n
  • $FZF_DEFAULT_OPTS\n--prompt=\'\xef\x8c\x83 \' --cycle --preview=\'bat {}\' +i --bind=ctrl-j:preview-half-page-down,ctrl-k:preview-half-page-up

    \n
  • \n
\n

如何使用 vim 和 sed 中的正则表达式模式来查找文件(以及是否可以在这些文件中查找单词)?

\n

regular-expression fzf

7
推荐指数
1
解决办法
3076
查看次数

如何在 zsh 中使用 fzf 获得模糊 xdg-open?

问题

我一直在尝试使用fzf绑定快捷方式(最好是Ctrl+ o)以交互方式搜索文件并将其通过管道传输到xdg-openzsh 中。fzf只要您获取位于fzf/shell/key-bindings.zsh中的文件,许多快捷方式就已经是该实用程序的一部分。在那里,您将找到用于绑定Ctrl+r模糊搜索命令历史记录和Ctrl+t模糊完成当前命令行的片段。这是 fzf 源代码中第一个快捷方式的样子:

# CTRL-R - Paste the selected command from history into the command line
fzf-history-widget() {
  local selected num
  setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null
  selected=( $(fc -rl 1 | perl -ne 'print if !$seen{(/^\s*[0-9]+\**\s+(.*)/, $1)}++' |
    FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} $FZF_DEFAULT_OPTS -n2..,.. --tiebreak=index --bind=ctrl-r:toggle-sort,ctrl-z:ignore $FZF_CTRL_R_OPTS --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) )
  local ret=$?
  if [ -n "$selected" …
Run Code Online (Sandbox Code Playgroud)

shell zsh fzf

6
推荐指数
1
解决办法
1376
查看次数

如何让“fzf”选择的结果进入我的 bash 历史记录?

FZF 是一个可爱的工具,我遇到的主要问题是我最终使用它运行的命令不会出现在我的 bash 历史记录中。

假设我这样做

history | fzf
Run Code Online (Sandbox Code Playgroud)

我选择最近运行的命令,例如echo "hello"。然后,当我查看 bash 历史记录时,我最近运行的命令不是echo "hello",而是history | fzf。这意味着如果我想再次运行它,我必须重新运行整个history | fzf并找到相同的echo "hello"命令。

有没有办法强制我选择的命令,我通过使用fzf进入我的 bash 历史记录?

bash command-history fzf

5
推荐指数
0
解决办法
1357
查看次数

无法使用 find、fzf 和 xargs 获取文件源

我正在尝试使用 fzf 来选择并激活不同的虚拟环境。但是,我收到以下错误:
xargs: source: No such file or directory

我的命令包括三个部分:find | fzf | xargs
(1) find 定位我的虚拟环境,
(2) 使用 fzf 选择虚拟环境,
(3) xargs 用于source所选文件。

下面是完整的命令:
find ~/.virtualenvs/ -maxdepth 1 -type d | fzf | xargs -I {} source {}/bin/activate
xargs: source: No such file or directory

我可以直接获取该文件(即命令提示符显示进入 fzf_delete 虚拟环境):
brian:~$ source /home/brian/.virtualenvs/fzf_delete/bin/activate
(fzf_delete) brian:~$

我可以使用 fzf 选择虚拟环境:
find ~/.virtualenvs/ -maxdepth 1 -type d | fzf
/home/brian/.virtualenvs/fzf_delete

我还通过删除对 find 和 fzf 的依赖来将问题隔离到 xargs:
echo "/home/brian/.virtualenvs/fzf_delete" | xargs …

source find xargs virtualenv fzf

3
推荐指数
1
解决办法
627
查看次数

Mapfile 不删除尾随换行符

  • 示例数据:制表符分隔的 tsv 文件
a.1.58  fadado/CSV  https://github.com/fadado/CSV
a.1.63  jehiah/json2csv https://github.com/jehiah/json2csv
a.1.80  stedolan/jq https://github.com/stedolan/jq/issues/370
Run Code Online (Sandbox Code Playgroud)
  • 以下使用 fzf 选择一条记录,并将第 2 和第 3 列存储到数组 Link:
mapfile -d $'\t' -t Link < <(awk 'BEGIN{FS="\t"; OFS="\t"} {print $2,$3}' "${SessionP}" | fzf)
Run Code Online (Sandbox Code Playgroud)

问题

在上面的命令中,我使用-t了 mapfile 选项,但echo "${Link[1]}"打印了一个新的行尾!

为什么没有被淘汰?


参考

array gnu newlines fzf

2
推荐指数
1
解决办法
171
查看次数

将目录传递给 cd

我有一个函数,我希望它能让我对我一直在查看的最新目录进行模糊搜索并节省时间,这是一个简单的 1 行:

dirs | sed 'y/ /\n/' | fzf | xargs cd
Run Code Online (Sandbox Code Playgroud)

2 小时后,我不知道出了什么问题):

我不断收到以下错误:

/usr/bin/cd: line 4: cd: ~/Downloads/demo: No such file or directory
Run Code Online (Sandbox Code Playgroud)

即使目录确实存在,无论我做什么。cd 怎么了,为什么这不起作用?

感谢您的评论:更多信息 我尝试了其他一些方法,例如编写函数:

fdr() {
     local dir
     dir=`dirs | sed 'y/ /\n/' | fzf`
     cd $dir
}  
Run Code Online (Sandbox Code Playgroud)

虽然 dir具有正确的值,我得到与上面相同的错误。

我的最终功能

感谢您的帮助,sub shells 正在让我思考,这是我的最终答案,有点hackey,但现在不是什么。

/usr/bin/cd: line 4: cd: ~/Downloads/demo: No such file or directory
Run Code Online (Sandbox Code Playgroud)

cd-command fzf

0
推荐指数
1
解决办法
206
查看次数

我如何在 bash 中准确地为这一衬里起别名?

bash 别名不喜欢引号

dpkg-query -W -f '${Installed-Size;8}kb ${Package} ${Version} ${Status}\n' | sort -n | column -t | grep -Pv "(lib*)" | fzf
Run Code Online (Sandbox Code Playgroud)

linux terminal alias fzf

0
推荐指数
1
解决办法
60
查看次数