如何在shell中快速将光标恢复到命令执行前的位置?

wj8zmpe1  于 2023-03-09  发布在  Shell
关注(0)|答案(1)|浏览(176)

这是我经常遇到的情况:我正在 shell 中创建一个长命令(这里是fish,但也可以是bash或其他形式),并带有一堆标志和参数,所以我在命令中来回切换。最后,我的光标刚好位于命令中间的标志之后。我想我已经完成了,所以我按了回车键来执行命令。但是命令没有执行,因为我犯了一些错误。因此,我点击向上箭头键,使前一个命令返回到提示符中以修复它。
但是shell并没有恢复我的光标位置,它把我的光标移到了末尾,这是不实际的,因为我需要修改的参数位于命令的中间,事实上,在我按回车键之前,我的光标所在的位置。
我正在寻找一种方法,让我的shell可以根据需要恢复光标位置,例如当我按下某个组合键时,这将节省我将光标导航回正确位置的时间。
我目前使用的是fish shell,但我愿意使用任何其他具有此功能的shell(bash、zsh)。
如何在shell中快速将光标恢复到命令执行前的位置?
谢谢你的建议。

efzxgjgh

efzxgjgh1#

在fish-shell中实现这一点的一种方法是添加一对函数,一个保存光标位置并执行命令,另一个恢复光标位置:

function save_cursor_and_exec
    set -g SAVED_CURSOR (commandline --cursor)
    commandline -f execute
end

function restore_cursor
    commandline --cursor $SAVED_CURSOR
end

现在我们将\r(enter)绑定到第一个函数,将control-R绑定到第二个函数:

bind \r save_cursor_and_exec
bind \cR restore_cursor

现在点击向上箭头键后,Ctrl + R将光标恢复到保存的位置。

相关问题