我找到了以下方法:
wcd() { cd `wslpath "$1"`; }
cdw() { cd "$(wslpath "$1")"; }
他们需要在路径周围添加双引号:
wcd "F:\folder_xxx"
这对我来说不舒服。
我想要
wcd F:\folder_xxx
我如何实现我的目标?
我找到了以下方法:
wcd() { cd `wslpath "$1"`; }
cdw() { cd "$(wslpath "$1")"; }
他们需要在路径周围添加双引号:
wcd "F:\folder_xxx"
这对我来说不舒服。
我想要
wcd F:\folder_xxx
我如何实现我的目标?
使用魔法别名。
定义一个从 shell 历史中提取最后一行的辅助函数:
为执行此操作的函数起一个不同的名称:
定义一个以 a 结尾的别名
#
,使整个文本在技术上成为不受反斜杠扩展影响的注释:请注意,这将禁止所有特殊的 shell 语法处理,包括 $variables、链式 && 命令、“引号”等。单词之后的所有内容都
wcd
将成为参数。替代方法:重新定义readline Enter 键处理程序以自动添加引号。
定义一个对 $READLINE_LINE 进行编辑的函数:
绑定一个键(例如Alt+1):
在发出换行符之前绑定“返回”事件以发出该密钥:
我认为这在技术上比之前的建议更糟糕,因为一旦它出错并引用了你不想引用的东西,它会让你认为你自己输入了额外的引号。
备选方案:定义一个在当前单词周围插入引号的 readline 宏。(未经测试;我只是从 bash(1) 手册中取出它。)
将此绑定添加到
~/.inputrc
:使用Ctrl+X,Q来调用它。
感谢user1686,我学会了魔法别名。
虽然它不适用于 zsh。
第一个问题是如何获得正确的最后历史记录
tail -n -1 ~/.zsh_history
第二个是正则表达式
^\s*[0-9]\+\s\+([^)]\+)\s\+$1\s\+//"
与大小写不符,在https://sed.js.org/index.html上测试"s/.\+$1\s\+//"
最后
在下面添加
~/.zshrc
,你可以echow
用来做魔术别名测试然后
wcd F:\xxxx
工作!