环境
macos + iterm2+tmux
需求
- 快速复制当前终端里面的命令
- 复制当前目录的绝对路径
- 复制文件的绝对路径
现在做法
- shift+cmd+z 实现当前命令复制
- 命令行输入
cn
实现目录复制
- 命令式输入
cn
+文件名或者子目录名 实现绝对路径复制
觉得方便就往下看哦
方式2和3实现比较简单, 在.zshrc
里面添加如下内容即可
function cn {
if [ $# -eq 0 ]
then
echo "$(pwd)" | xargs echo -n | pbcopy && pwd
else
echo -n $(pwd)/$1 | pbcopy && echo $(pwd)/$1
fi
}
xargs
起到去除换行符的功能,pbcopy负责粘贴到剪贴板,$#
是输入参数的个数
方式1有点麻烦,必须配合tmux使用,不过tmux应该人手必备了
- 在iterm2里面开启剪贴板支持
新版本iterm2里面提供了搜索功能,搜索clipboard即可 - 在
.tmux/plugins
下新建一个copy_line.sh
的脚本,如下
#!/usr/bin/env bash
main() {
tmux send-key 'C-a'
tmux copy-mode
tmux send-key 'Space'
tmux send-key '$'
tmux send-key 'b'
tmux send-key 'e'
tmux send -X copy-pipe-and-cancel "pbcopy"
tmux send-key 'C-e'
tmux display-message 'Line copied to clipboard!'
}
main
在.tmux.conf
里面添加
setw -g mode-keys vi
bind-key "y" run-shell -b "/Users/carry/.tmux/plugins/copy_line.sh"
到此,通过prefix+y
比如我就是ctrl b
和y就可以复制当前命令
- 设置快捷键
这里的0x02
就是ctrl+b
,0x79
是y,可以在linux下用show-key -a
命令来查看按键的映射