微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – Bash reg-exp替换

有没有办法在bash中的当前行上运行 regexp-string替换?

我经常在这种情况下找到自己,在那里我输入了一个长命令行,然后意识到,我想在一行中改变一个单词.

我当前的方法是完成该行,按Ctrl A(到达行的开头),插入一个#(注释掉行),按回车键然后使用^ oldword ^ newword语法(^ oldword ^ newword用newword替换oldword后执行一个命令).

但必须有一种更好(更快)的方法来实现这一目标. (鼠标是不可能的,因为我大部分时间都在ssh-sessions中).

可能有一些类似emacs的键命令,我不知道.

编辑:我尝试过使用vi-mode.发生了一件奇怪的事.虽然我是一个充满爱心的用户,但是使用我心爱的bash时我遇到了很大的麻烦.所有那些已经被我的潜意识烧伤的手指动作突然停止了工作.我很快回到emacs模式并考虑,给emacs一个尝试作为我最喜欢的编辑器(虽然我猜,同样的事情可能会再次发生).

解决方法

不幸的是,不,没有更好的方法.如果你只是厌倦了按键,你可以使用宏来修剪它们.将以下内容添加到〜/ .inputrc中:

"\C-x6": "\C-a#\C-m^"
"\C-x7": "\C-m\C-P\C-a\C-d\C-m"

现在,在一个新的bash实例中(或者通过按C-x C-r在当前shell中重新加载.inputrc之后),您可以执行以下操作:

>键入伪命令(例如,ls abcxyz).
>按Ctrl-x,然后按6.宏在行的开头插入一个#,执行注释行,然后键入第一个^.
>输入您的更正(例如,xyz ^ def).
>按Ctrl-x,然后按7.宏完成替换,然后转到上一个(注释)行,删除注释字符,然后再次执行.

这不是很优雅,但我认为这是你用readline获得的最好的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐