#!/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
}
4条答案
按热度按时间sulc1iza1#
根据您的评论,唯一的问题可能来自此部件:
字符串
如果变量EDITOR有非空值,则扩展到EDITOR的内容,如果它为空或未设置,则扩展到
atom
。很可能您将该变量初始化为atom
以外的值。试着简单地使用atom
,像这样:型
当然,您也可以保持该函数的原样,但要确保您的环境包含类似
EDITOR=atom
的内容。wixjitnu2#
我的wrote a function,我保持在我的.bashrc,你可以用它来选择任何文件通过fzf,并有他们传递到任何程序你想要的(所以不仅sublime,但任何GUI程序,你添加到函数的列表),它也与命令行工具,如cd,猫,尾巴,头等。你也可以通过你的历史循环回来,找到命令,因为它是在fzf做了它的事情后展开的。如果你配置fzf在默认情况下(或see here)查看文件系统上的许多常见位置,这个函数就非常有用。我每天使用它很多次,主要是为了改变目录(f cd)或打开文件。
在您的情况下,您只需在终端中输入:
字符串
和fzf将启动,在您选择您的文件(s)崇高将打开它们。
我把函数放在下面,我在这里得到了它的灵感
型
n8ghc7c13#
对于那些寻求在MacOS中打开结果的一般方法的人:
定义此别名以通过操作系统默认应用程序打开文件(基于所选文件类型):
字符串
然后键入
f
命令,找到您的文件并点击ENTER
。9jyewag04#
oneliner(基本上)我只是从我的.zshrc复制:
字符串
它有点“生硬”,但它确实是我需要的。代码应该是非常不言自明的。使用此代码,您可以执行以下操作:
型
这将直接带您到您的nvim配置。当然还有很多其他的用例,但我喜欢这一个;)(尽管它有一系列问题:不工作w/别名等)