输入 config nu
编辑 Nushell 的配置文件
$env.config = { # emacs, vi edit_mode: vi # 光标形状,根据需要自行调整 cursor_shape: { emacs: block vi_insert: blink_block vi_normal: blink_underscore } }
Text Objects 是 Vim 最吸引我的一个 feature,删除括号内的内容,或者删除引号内的内容,都可以很流畅的完成。例如,对于命令:
$env.LS_COLORS = (vivid generate catppuccin-mocha)
在 NORMAL 模式下将光标移至括号内,键入 d
、i
、(
即可删除括号内的 Text
Key | 跳转位置 |
---|---|
w | 下一个单词 |
b | 上一个单词 |
I | 行首 |
A | 行尾 |
F- | 前面的- 字符 |
f- | 后面的- 字段 |
当编辑 UNIX
和 GNU
风格的命令行参数时,这种情况下用 F/f
将在不同参数之间切换还是很流畅的
风格类型 | 前缀 | 选项格式 | 示例 |
---|---|---|---|
Unix | - | 单字母 | ls -la |
GNU | -- | 单词 | grep --color |
BSD | Nothing | 单字母 | ps aux |
Windows | / | 单词/字母 | DIR /W |
许多 Shell 也支持使用命令外部编辑器中对命令进行编辑,这样就可以使用 NeoVim, Helix 来编辑命令了 🤓,如果不在乎启动速度,甚至可以用 VSCode。
Shell | Vi 模式 | Emacs 模式 |
---|---|---|
Bash | Normal 模式下按 v | Ctrl+x Ctrl+e |
Zsh | 不知道喵 චᆽච | 不知道喵 චᆽච |
Fish | Alt+e | Alt+e |
Nushell | Ctrl+o | Ctrl+o |
下面简单演示一下,假如要使用 scp
将 remote machine 上的文件复制到本地,但是 remote machine 的 host name 写错了
不觉得这很酷吗,作为一名理工男我觉得这太酷了 🤓🤓🤓
如何指定编辑命令的编辑器?
一般来说,Shell 会读取 VISUAL
或 EDITOR
环境变量,决定使用哪个编辑器。像 NuShell 的话也可以设置 $env.config.buffer_editor
变量
# if using nushell, add this line to config.nu$env.config = { buffer_editor: "helix"}# if using bash/zsh, add this line to .bashrc/.zshrcexport VISUAL=nvim # if using fish, add this line to config.fishset -gx VISUAL nvim
Unix 设置系统环境变量,也可以参考这篇文章的方式 👉 [[Unix 环境变量|Set System Env-Vars in UNIX]]
Terminal Tricks —— Inline Editing