使用 fish 的内置编辑器编辑脚本时如何插入新行?
How to insert new lines when editing some script with fish's built-in editor?
在 fish 中输入多行脚本时 shell,例如我输入了这些脚本
$ 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
,但它执行了脚本而不是插入新行
在默认绑定中,Alt-Enter 将始终插入一个新行:
> bind|fgrep \n
bind \e\n commandline\ -i\ \n
bind \e\r commandline\ -i\ \n
...
根据您的系统配置,Enter/Return 键可能会发送换行符 (\n
) 或 carriage-return 字符 (\r
),这就是为什么有两个条目。
fish绑定转义+换行无条件插入换行。在 Mac 上,您通常会按选项 + return。但是 Mac 终端仿真器默认不发送 escape-newline。使用 iTerm2,您可以在 Preferences->Profiles->Keys:
下请求该选项充当转义符
现在绑定将处于活动状态,option-return 将无条件插入换行符。
(如果您愿意,您可以为这种情况添加键映射。)
您可以使用与 fish 一起安装的 fish_key_reader
来确认终端从模拟器接收到的内容。
在 fish 中输入多行脚本时 shell,例如我输入了这些脚本
$ 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
,但它执行了脚本而不是插入新行
在默认绑定中,Alt-Enter 将始终插入一个新行:
> bind|fgrep \n
bind \e\n commandline\ -i\ \n
bind \e\r commandline\ -i\ \n
...
根据您的系统配置,Enter/Return 键可能会发送换行符 (\n
) 或 carriage-return 字符 (\r
),这就是为什么有两个条目。
fish绑定转义+换行无条件插入换行。在 Mac 上,您通常会按选项 + return。但是 Mac 终端仿真器默认不发送 escape-newline。使用 iTerm2,您可以在 Preferences->Profiles->Keys:
下请求该选项充当转义符现在绑定将处于活动状态,option-return 将无条件插入换行符。
(如果您愿意,您可以为这种情况添加键映射。)
您可以使用与 fish 一起安装的 fish_key_reader
来确认终端从模拟器接收到的内容。