[英]How to copy selected lines to clipboard in vim
SHIFT V使您進入選擇行模式。 然后" * y將當前選擇的行拉到*
寄存器,它是剪貼板。有很多不同的寄存器,用於不同的目的。有關 Windows 上*
和+
寄存器之間差異的詳細信息,請參閱selection and drop registers
部分和 Linux。
如果您在 Linux 上使用 VIm 7.3.74 或更高版本(安裝在 Ubuntu 11.10 之后的版本滿足此要求),您可以這樣做
set clipboard=unnamedplus
這會將拉取的文本放入全局剪貼板,並允許您從全局剪貼板粘貼,而無需使用任何特殊寄存器。 與 ldigas 的解決方案不同,這也適用於非 gui 版本的 VIm。
set guioptions+=a
將,...嗯,簡而言之,每當您選擇/拉動某些東西時,它也會將其放入剪貼板(不是 Vim 的,而是窗口系統的全局鍵盤)。 這樣你就不必考慮把東西拉到一個特殊的寄存器中。
對於 GVIM,點擊v
進入可視模式; 選擇文本並按Ctrl+Insert
將選擇復制到全局剪貼板。
從菜單中可以看到快捷鍵是"+y
即按住Shift鍵,然后按"
,然后+
然后松開Shift再按y
(相對於Shift+Insert比較麻煩)。
如果您在 MAC OSX 中使用 vim,不幸的是它帶有舊版本,並且不符合剪貼板選項。 幸運的是,自制軟件可以輕松解決這個問題。
安裝vim:
brew install vim --with-lua --with-override-system-vim
安裝vim的gui版本:
brew install macvim --with-lua --with-override-system-vim
重啟終端生效。
將以下行追加到 ~/.vimrc
set clipboard=unnamed
現在您可以使用yy
在 vim 中復制該行並將其粘貼到系統范圍內。
如果您還沒有安裝“xclip”...
sudo apt-get install xclip
Xclip 將數據放入“選擇/突出顯示”剪貼板中,您可以通過中鍵單擊粘貼而不是“ctrl+v”
在 vim 中使用 ex 命令:
7w !xclip
要么
1,7w !xclip
要么
%w !xclip
然后只需單擊鼠標中鍵即可粘貼到任何其他應用程序中...
如果 vim 編譯時支持剪貼板,那么您可以使用"*y
意思:將視覺上選擇的文本拖入寄存器*
('*' 用於剪貼板)
如果沒有剪貼板支持,我認為只有在vim中直觀地選擇文本后使用Ctrl+Insert
。
我已將以下行添加到我的.vimrc
vnoremap <F5> "+y<CR>
這允許您通過按F5
將所選文本復制到剪貼板。 您必須處於可視模式才能使其正常工作。
將以下代碼添加到您的.vimrc
:
if has('clipboard')
if has('unnamedplus') " When possible use + register for copy-paste
set clipboard=unnamed,unnamedplus
else " On mac and Windows, use * register for copy-paste
set clipboard=unnamed
endif
endif
首先檢查您的 vim 安裝是否支持剪貼板。
vim --version
如果安裝了剪貼板支持,您將看到:
+clipboard
+X11
+xterm_clipboard
如果未安裝剪貼板支持,您將看到:
-clipboard
-X11
-xterm_clipboard
安裝剪貼板支持:
apt-get install vim-gnome
確認已安裝剪貼板支持后,請執行以下操作:
如果您必須重復從 vim 復制到系統剪貼板,反之亦然,上述步驟可能會變得乏味。 您可以創建 vim 快捷方式,以便當您按Ctrl c 時,所選文本將被復制到系統剪貼板。 當你按下Ctrl p系統剪貼板文本被復制到 vim。 創建快捷方式:
打開 .vimrc 文件並在文件末尾添加以下文本:
nnoremap <Cc> "+y vnoremap <Cc> "+y nnoremap <Cp> "+p vnoremap <Cp> "+p
保存並重新加載您的 .vimrc 以應用新的更改。
將光標定位到要復制的第一行。
按Shift v進入可視模式。
按↓選擇多行
按Ctrl c將所選文本復制到系統剪貼板。
現在您可以將所選文本復制到瀏覽器、文本編輯器等。
如果要將系統剪貼板文本復制到 vim,請按Ctrl p 。
注意:這是針對 ubuntu 系統的。
以下是可行的步驟:
在對該線程進行了一些有用的評論后,我決定添加自己的設置,到目前為止效果很好:
vim.api.nvim_set_keymap('v', '<C-C>', '"+y', { noremap = true, silent = true })
vim.api.nvim_set_keymap('v', '<C-X>', '"+ygv<DEL>', { noremap = true, silent = true })
我只是在可視模式下 select 然后按大家都知道的 Ctrl+C。 如果我還想刪除它,我按 Ctrl+X。 基本上這就是它在所有現代編輯器中的工作方式,而且它比 vim 的模態命令性能更高,為什么不呢?
請注意,此配置位於lua
中。 我強烈建議在 vimscript 上使用它,它更豐富。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.