说我有一个目录中有一个文件mylongfilename.blahdeblah.txt现在击键mv [选项卡] [选项卡]将导致mv mylongfilename.blahdeblah.txt mylongfilename.blahdeblah.txt在我的命令行
我现在想要做的是在第二个blahdeblah的地方键入的东西,如果我按ctrl-b几次,我会回来的。 之前.txt在这一点上我想input类似ctrl-w删除到前面。 即我最终与mv mylongfilename.blahdeblah.txt mylongfilename..txt
有没有类似于CTRL-W键击会做到这一点? (Ctrl-W将删除到前面的空间 – 不是我想要的)
您似乎是在emacs模式。 要做到你想在那里,这个工程:
meta-backspace
(严格来说就是M-Del,更多的Emacs键盘参见这个页面 ,我不认为Bash的emacs模式支持它们,但是它支持这个模式)。
telemachus ~ $ mv mylongfilename.blahblah.txt mylongfilename.|.txt
pipe道显示光标结束。
Bash有emacs和vi模式。 在vi模式下,只需dw为删除单词,或cw为更改单词。 设置-o vi进入vi模式。 可能有一个emacs模式等效。
man readline是bash键盘的参考资料,而bash的特定版本是readline在man bash中。
从男人bash:
COMP_WORDBREAKS The set of characters that the Readline library treats as word separators when performing word completion. If COMP_WORDBREAKS is unset, it loses its special properties, even if it is subsequently reset.
改变这个应该改变用作分词的字符,所以如果你加了'。' 到它的当前值,那么Ctrl-w将会删除回到'。' 而不是回到先前的空间。
你可以尝试交换单词,把部分blahdeblah
放在行尾(用Esc-T),然后删除行尾:
MV [选项卡] [选项卡]
mv mylongfilename.blahdeblah.txt mylongfilename.blahdeblah.txt
[Esc-T](交换光标前的最后两个单词)
mv mylongfilename.blahdeblah.txt mylongfilename.txt .blahdeblah
[CTRL-W]
mv mylongfilename.blahdeblah.txt mylongfilename.txt
假设你在这个目录中有很多这样的“mv”操作,为什么不用一个简短的翻译脚本来编写“sed”呢?
你会在这里find一些技巧。 但是,不要让这限制你,但所有的手段也查找更多sed和awk。