Note: The Listed platform will permanently shut down December 31, 2026. Your data published on Listed will still be available in your personal Standard Notes account. Learn more

直接從 linux command line 的 stdin 複製資料

從 stdin 複製資料

下載下面程式

https://chromium.googlesource.com/apps/libapps/+/master/hterm/etc/osc52.sh

之後就可以透過將資料丟到 hterm-copy 的 stdin,terminal emulator 則會自動複製資料

執行下面指令

sudo curl https://raw.githubusercontent.com/kjelly/auto_config/master/roles/mybin/files/mybin/hterm-copy.sh -o /usr/bin/hterm-copy

之後就可以透過將資料丟到 hterm-copy 的 stdin,系統則會自動複製資料

和 vim 整合

如果想要和 vim(or neovim) 做整合,則執行下面動作

  • 下載 https://raw.githubusercontent.com/kjelly/auto_config/master/roles/vim/files/clipboard-provider
  • 確保 clipboard-provider 可被執行
  • 在你的 vimrc 加入以下程式碼
  let g:clipboard = {
        \ 'name': 'myClipboard',
        \     'copy': {
        \         '+': 'clipboard-provider copy',
        \         '*': 'env COPY_PROVIDERS=tmux clipboard-provider copy',
        \     },
        \     'paste': {
        \         '+': 'clipboard-provider paste',
        \         '*': 'env COPY_PROVIDERS=tmux clipboard-provider paste',
        \     },
        \ }

完成上述動作後,即可透過 "+yy 來執行複製。

你也可以新增下述快速鍵,來方便複製資料

nnoremap YY "+yy
nnoremap Y "+y
vnoremap Y "+y

在 neovim teminal 也可以從 stdin 複製資料

原始的 osc52.sh 不支援在 neovim terminal 下,透過 stdin 複製資料。所以我改寫程式,讓 osc52.sh 支援此功能(不過也因此只支援在 tmux 下複製資料)。

執行下面指令

sudo curl https://raw.githubusercontent.com/kjelly/auto_config/master/roles/mybin/files/mybin/hterm-copy.sh -o /usr/bin/hterm-copy

之後就可以透過將資料丟到 hterm-copy 的 stdin,系統則會自動複製資料

要在 neovim terminal 下複製資料,還需要在 vimrc 新增 let $HTERM_TTY=substitute(system("tty < /proc/" . getpid() . "/fd/0"), \n $', '', '')


You'll only receive email when they publish something new.

More from kjelly
All posts