在输入鱼壳中的多行脚本时,例如我输入了这些脚本
$ for file in *.txt
echo $file
end我的插入符号是在单词end之后。现在我想在它前面插入一行,使它像:
$ for file in *.txt
echo $file
echo "hello" // I want to insert this line
end但是我发现,如果我在echo $file上和后面移动插入符号,然后按enter(或cmd/option/ctrl+enter),它只运行整个脚本而不插入新行。我得把它们复制到另一个编辑器,编辑后再复制回来。
有什么办法吗?
更新:
我刚刚上传了一个录制https://asciinema.org/a/i7pOWhpdXUu0RLVOAMjVJTXbn的屏幕。在录音中,我将插入符号移到echo之后并按下option + enter,但它执行脚本而不是插入新行。
发布于 2018-04-02 16:36:49
fish将转义+换行符绑定为无条件插入换行符。在Mac上,您通常会按“选项+返回”。但是,默认情况下,Mac终端模拟器不会发送转义换行符。使用iTerm2,您可以请求该选项作为转义,在Preferences->Profiles->Key下:

现在绑定将是活动的,选项返回将无条件地插入一个换行符。
(如果您愿意,可以为这种情况添加一个键映射。)
您可以用安装在fish旁边的fish_key_reader来确认终端从模拟器接收到什么。
发布于 2018-04-02 11:53:32
在默认绑定中,Alt-Enter将始终插入新行:
> bind|fgrep \\n
bind \e\n commandline\ -i\ \\n
bind \e\r commandline\ -i\ \\n
...根据您的系统配置,Enter/Return键可能发送换行符(\n)或回车字符(\r),这就是为什么有两个条目。
https://stackoverflow.com/questions/49606501
复制相似问题