我在 vi 模式下使用 Bash 和set -o vi
.
我经常重新运行命令,但需要更改同一目录中的文件名。
例子:
mv /tmp/myfileA.txt /home/daniel/myfileA.txt
然后,我决定也移动另一个文件:
mv /tmp/w00t.txt /home/daniel/w00t.txt
通常,我按向上箭头键获取最后一个命令,然后按向上箭头键b
直到到达最后一个斜杠字符,然后插入新文件名。由于我经常这样做,我想知道是否有一种简单的方法可以将光标置于最后一个斜杠字符之后或之上。
请注意,以上仅为示例;我知道我可以做类似的事情mv /tmp/{myfileA,w00t}.txt ...
,但通常我只是打字比我想象的更快:-)
答案1
T/
将光标放在最后一个/
字符之后,因此:
Up Esc c Shift+T / w00t.txt
Enter
或者,替换文件名中的第一个单词:
Up Esc Shift+T / c w w00t
Enter
或者,如果扩展名前面有多个单词并且您想保留扩展名:
Up Esc Shift+T / c t . w00t
Enter
或者,通过历史扩展:
!!:h/w00t.txt
答案2
Escape
Shiftf
/
Escape让您进入编辑模式
Shiftf向后搜索模式:
/
然后您可以执行许多不同的选项:
Controlk: 删除到行尾
df/: 相同
i让你回到插入模式...