通常,当我想对调用 [ls] 后在终端中发现的文件执行操作时,我必须使用鼠标突出显示、左键单击、复制文件名、键入命令,然后粘贴文件名再次。
有没有办法在不使用鼠标的情况下复制之前在终端中显示的某个字符串?
谢谢!
答案1
sudo apt-get install xclip
创建别名:
alias pbcopy='xclip -selection clipboard'
使用此命令进行复制
ls | pbcopy
(您也可以使用
ls <filename> | pbcopy
复制特定的文件名。如果您不知道别名是什么: http://www.hostingadvice.com/how-to/set-command-aliases-linuxubuntudebian/)
答案2
如果您正在处理通过 发现的文件,我通常发现最简单的方法是使用制表符补全或通配它们:例如,ls
如果我想对 进行操作,则比复制粘贴更快。report.tex
vim re<TAB>
但复制粘贴确实有其用处。我的大部分工作都是tmux
通过 vi 绑定完成的。如果您有 emacs 绑定(默认),则方法类似(下面的C-
意思是“按 Control,然后按破折号后的键”,A-
类似,但对于 Alt,并且prefix
可能是您的前缀C-b
):
- 在任一情况下,按下
<prefix>[
即可进入复印模式 hjkl
使用箭头键(始终)或(可能仅适用于 vi 模式?)导航到您想要复制的文本的任一端- 如果处于 emacs 模式,请按
C-<Spaaaaaace>
开始选择。如果处于 vi 模式,请按<Spaaaaaace>
。 - 如果在 emacs 模式下,按下
A-w
可复制所选文本。在 vi 模式下,按<Enter>
。 - 粘贴选择内容
<prefix>]
或使用命令tmux show-buffer
将复制的文本输出到标准输出,这对于管道输入命令和自动化非常有用。
当您复制其他内容时,Tmux 会记住您复制的内容。查看使用 复制的内容的列表<prefix>#
。<prefix>]
粘贴最新的副本,但tmux show-buffer
可以使用-n <number>
参数来输出较旧的副本。
我不知道如何直接复制screen
,但这是一个大致相似的过程;我确信谷歌上有大量关于它的博客文章。
编辑:我绝对建议一般使用终端多路复用器;无论终端模拟器或窗口管理器如何,您都可以通过三个按键来使用另一个终端。肌肉记忆力真好!
答案3
Urxvt 拥有优秀的urxvt-perls脚本集合,允许您在终端中操作文本,而无需求助于啮齿动物。
除了复制和粘贴之外,您还可以选择 URL 并在浏览器中打开它们,或者将它们拉到剪贴板,搜索回滚,并且通常将文本视为在 $EDITOR 中。