Bash
從剪貼板粘貼到啟用 vi 的 zsh 或 bash shell
我希望能夠使用鍵盤從系統剪貼板(或文本選擇)粘貼到我的“vi-like”shell 提示符中。我通常使用 zsh,有時使用 bash。在這兩種情況下,我都將 shell 設置為類似 vi 的行為 (
bindkey -v
/set -o vi
)。在 vim 中,我正在尋找的行為可通過 key sequence 獲得
"+p
。但是,在啟用 vi 的 shell 提示符下,這個特定的鍵序列不能按預期工作。有沒有什麼辦法可以啟用這個或類似的行為,只使用鍵盤,同時在 zsh 或 bash shell 提示符中保留類似 vi 的鍵綁定?
- 編輯 -
案例:我經常在 Firefox 與Pentadactyl 外掛、終端模擬器和 vim 本身之間導航 - 使用帶有自定義鍵的Xmonad視窗管理器來移動。所有三個程序都有類似 vi 的鍵綁定,這非常有效(對於“手指記憶”),因此僅使用 vim 語法(或非常相似的語法)在它們之間進行文本通信是理想的。
Zsh 除了內部寄存器之外什麼都不支持,據我所知 bash 根本不支持寄存器。總的來說,shell 支持 vi 命令,而不是 vim 命令。
在 zsh 中,這是一個從命令模式訪問 X 選擇的概念驗證。對於實際使用,您需要詳細說明這些技術。我用的是
xsel
程序,你可以xclip
改用;請參閱如何使用寄存器從一個 vim 實例複製到另一個。您會在zle 手冊中找到我使用的功能。vi-append-x-selection () { RBUFFER=$(xsel -o -p </dev/null)$RBUFFER; } zle -N vi-append-x-selection bindkey -a '^X' vi-append-x-selection vi-yank-x-selection () { print -rn -- $CUTBUFFER | xsel -i -p; } zle -N vi-yank-x-selection bindkey -a '^Y' vi-yank-x-selection
該函式
vi-append-x-selection
在游標之後插入目前 X 選擇(類似於p
orP
)。該函式vi-yank-x-selection
將最後殺死或拉出的文本複製到 X 選擇。zle -N
將函式聲明為 zle 小元件(即編輯命令)。bindkey -a
為 vi 命令模式設置綁定。