正则表达式 – 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获得的最好的.

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...