如何从 FZF 在特定应用程序中打开文件

2023-11-30

我想用FZF搜索文件,然后在我选择的编辑器中打开它们,例如太棒了,原子。我不知道如何为此配置我的 shell,我已经尝试了以下方法,但无法让它工作。

你能帮我吗?

Thanks!

fe() {
local files
  IFS=$'\n' files=($(fzf-tmux --query="$1" --multi --select-1 --exit-0))
  [[ -n "$files" ]] && ${EDITOR:-atom} "${files[@]}"
}

I 写一个函数我保存在 .bashrc 中,您可以使用它通过 fzf 选择任何文件,并将它们传递给您想要的任何程序(因此不仅是 sublime,还包括您添加到函数列表中的任何 GUI 程序),它也可以与命令行一起使用像这样的工具cd, cat, tail, head等等。您还可以循环回历史记录并找到在 fzf 完成其操作后扩展的命令。如果你配置 fzf 默认情况下查看文件系统上的许多常见位置 (or see here)这个功能真的很闪亮。我每天都会用很多次,主要是换目录(f cd)或打开文件。

在您的情况下,您只需在终端中输入:

f sublime

fzf 将启动,在您选择文件后,sublime 将打开它们。

我把这个功能放在下面,我从中得到了灵感here

#!/bin/bash

# Run command/application and choose paths/files with fzf.
# Always return control of the terminal to user (e.g. when opening GUIs).
# The full command that was used will appear in your history just like any
# other (N.B. to achieve this I write the shell's active history to
# ~/.bash_history)
#
# Usage:
# f cd [OPTION]... (hit enter, choose path)
# f cat [OPTION]... (hit enter, choose files)
# f vim [OPTION]... (hit enter, choose files)
# f vlc [OPTION]... (hit enter, choose files)

f() {
    # if no arguments passed, just lauch fzf
    if [ $# -eq 0 ]
    then
        fzf | sort
        return 0
    fi

    # store the program
    program="$1"

    # remove first argument off the list
    shift

    # store any option flags
    options="$@"

    # store the arguments from fzf
    arguments=$(fzf --multi)

    # if no arguments passed (e.g. if Esc pressed), return to terminal
    if [ -z "${arguments}" ]; then
        return 1
    fi

    # sanitise the command:
    # put an extra single quote next to any pre-existing single quotes
    # put single quotes around each argument
    # put them all on one line.
    for arg in "${arguments[@]}"; do
        arguments=$(echo "$arg" | sed "s/'/''/g;
                                       s/.*/'&'/g;
                                       s/\n//g"
                   )
    done

    # if the program is on the GUI list, add a '&'
    if [[ "$program" =~ ^(nautilus|zathura|evince|vlc|eog|kolourpaint)$ ]]; then
        arguments="$arguments &"
    fi

    # write the shell's active history to ~/.bash_history.
    history -w

    # add the command with the sanitised arguments to .bash_history
    echo $program $options $arguments >> ~/.bash_history

    # reload the ~/.bash_history into the shell's active history
    history -r

    # execute the last command in history
    fc -s -1
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 FZF 在特定应用程序中打开文件 的相关文章

随机推荐

  • Django:模型名称冲突

    我正在尝试在我的项目中使用不同的开源应用程序 问题是两个不同的应用程序使用相同的模型名称并具有自己的模型定义 我尝试使用 class Meta db table db name 但没有成功 我在syncdb 上仍然遇到字段名称冲突错误 有什
  • 类型错误:无法读取 AngularJS 指令中未定义的属性“childNodes”

    我正在 AngularJS 中制作一个指令 Tab Slide Out 如下所示 angular module myApp directive tabSlideOut window document timeout function win
  • 在matlab中改变音频wav文件的音高?

    如何在 matlab 中改变音频信号的音调 本质上我只是想改变音频信号的原始质量而不做巨大的改变 我尝试使用原始输入音频通过稍微改变其质量来模拟合唱 以便我可以使用音频的多种变体来模拟合唱 最简单的方法可能是相位声码器 您可以在这里找到一种
  • 如何在 ASP.Net 站点中启用 FCKeditor 的实时预览?

    Over in this对于这个问题 Scott 写道 可以通过使用来获取 FCKeditor 中写入内容的当前 HTMLFCKeditorAPI Instances instanceNameHere GetHTML 有人可以提供有关如何在
  • Android:如何混合 2 个音频文件并使用 soundPool 重现它们

    我正在尝试开发一个 Android 应用程序 它使用一些声音并将它们混合在一起来创建音乐作品 一开始 我尝试同时再现声音 但是当我这样做时 它们变得不同步 在阅读论坛几个小时后 我意识到在循环模式下同时再现多个声音的最佳方法就是将音频文件合
  • 使用 matplotlib 和 pandas 库绘图不清楚

    有什么解释为什么我会得到这样的情节吗 指数回报的范围是从 100 到 130 我需要帮助来理解上面的这个图 代码很简单 但是情节不太清晰 import needed library import numpy as np import mat
  • 用于 IOS 开发的 QMessagebox 的任何替代解决方案(仅限 QWidget 应用程序)?

    我正在使用 Qt 5 3 并尝试为 IOS 开发应用程序 问题是 iPhone Retina 模拟器中的 QWidget 应用程序 QMessage 变为全屏 在应用程序输出面板中我看到 此插件不支持 传播大小提示 因此正在寻找 QMess
  • java 可以在对象仍在作用域内时终结该对象吗?

    我一直在研究代码中的一个错误 该错误似乎是由一些 丑陋 的终结器代码引起的 代码大致是这样的 public class A public B b new B Override public void finalize b close pub
  • sql server奇怪的Identity增量

    我在 SQL Azure 上设置了这个表 CREATE TABLE dbo Sl ID int IDENTITY 1 1 NOT NULL PublicId uniqueidentifier NOT NULL CONSTRAINT Prim
  • 如何从 MS Word 创建 PCL 文件

    如何创建类似于现有 MS 文档的新 PCL 文件 我有 MS 文档模板并将其替换为实际数据 我需要实现相同的 PCL 格式 创建 PCL 文件作为模板并将其替换为数据库中的实际值并将其发送到传真 安装新打印机 当询问端口时 创建一个 本地端
  • 来自另一个线程的 DoDragDrop()

    每次我想让用户拖动一个控件时 我都会调用该控件的 DoDragDrop 拖放工作正常 但我对周围的事情有问题 DoDragDrop 完全阻塞表单 没有计时器事件跳转 没有处理绘制消息 DoDragDrop 不仅会阻止拖放操作 还会阻止目标程
  • 尝试删除文件时“该进程无法访问该文件,因为该文件正在被另一个进程使用”

    当逐一删除文件时 会生成错误 该进程无法访问该文件 因为在尝试删除文件时该文件正在被另一个进程使用 代码 对于删除这样的文件有什么建议吗 private void DeleteFilesFromDestination string cons
  • MinGW 链接器错误:winsock

    我正在 Windows 上使用 MinGW 编译器来编译带有套接字的 C 应用程序 我的链接命令如下所示 g exe Wall Wno long long pedantic lwsock32 o dist Windows piskvorky
  • 在 PDO 中获取 SUM

    下面是我的代码 由于某种原因它没有给我总和 它总是返回 0 为什么它不起作用 我用过if totSubmits 以避免我的数据库中出现空白字段 我也尝试删除AS due fees并使用 dueAmont result 0 但没有运气 sql
  • C++ |主函数错误 |初学者[重复]

    这个问题在这里已经有答案了 我对 C 完全陌生 我正在使用 Eclipse 但是 我不知道为什么我在 main 函数中收到此错误 错误 main 必须返回 int 我的代码是 void main char a while a q strin
  • 如何在 bootstrap 4 和 angular2 中使用 Glyphicons?

    我正在使用 angular cli 和 bootstrap4 制作一个应用程序 但是当我对 Glyphicons 进行一些引用时 图标不会出现 例如 当我添加以下代码时
  • 响应式全屏 CarouFredSel 幻灯片

    这是一个自我问答 我已经使用令人惊叹的 CarouFredSel 滑块插件进行开发很长时间了 每次我必须制作需要在宽度和高度上响应的全屏幻灯片时 我都会忘记该怎么做 所以我为我和所有其他为此苦苦挣扎的人做了这个问答 所以 问题是 如何制作全
  • Java 1.6 与 C++ 的性能对比?

    随着 Java 1 6 的推出 我们是否可以说 Java 1 6 的性能几乎与 C 代码相当 或者与 C 相比 Java 在性能方面仍然有很多需要改进的地方 Thanks Debian 喜欢对这类事情进行基准测试 在他们的例子中 Java
  • JavaPreparedStatementsetString改变字符

    正如标题所示 可以肯定的是 我正在调试我的应用程序 因此在我将字符串放入PreparedStatement变量中时 特殊字符将更改为 我实际上不知道在哪里搜索应该修复它的东西 所以我不知道是否需要代码 无论如何 我会在这里放一些 Prepa
  • 如何从 FZF 在特定应用程序中打开文件

    我想用FZF搜索文件 然后在我选择的编辑器中打开它们 例如太棒了 原子 我不知道如何为此配置我的 shell 我已经尝试了以下方法 但无法让它工作 你能帮我吗 Thanks fe local files IFS n files fzf tm