簡體   English   中英

如何將選定的行復制到 vim 中的剪貼板

[英]How to copy selected lines to clipboard in vim

如何將選定的行復制到 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

確認已安裝剪貼板支持后,請執行以下操作:

  1. 將光標定位到要復制的第一行。
  2. Shift v進入可視模式。
  3. 選擇多行
  4. " + y將所選文本復制到系統剪貼板。
  5. 現在您可以將所選文本復制到瀏覽器、文本編輯器等。
  6. 如果要將系統剪貼板文本復制到 vim,請按" + p

如果您必須重復從 vim 復制到系統剪貼板,反之亦然,上述步驟可能會變得乏味。 您可以創建 vim 快捷方式,以便當您按Ctrl c 時,所選文本將被復制到系統剪貼板。 當你按下Ctrl p系統剪貼板文本被復制到 vim。 創建快捷方式:

  1. 打開 .vimrc 文件並在文件末尾添加以下文本:

     nnoremap <Cc> "+y vnoremap <Cc> "+y nnoremap <Cp> "+p vnoremap <Cp> "+p
  2. 保存並重新加載您的 .vimrc 以應用新的更改。

  3. 將光標定位到要復制的第一行。

  4. Shift v進入可視模式。

  5. 選擇多行

  6. Ctrl c將所選文本復制到系統剪貼板。

  7. 現在您可以將所選文本復制到瀏覽器、文本編輯器等。

  8. 如果要將系統剪貼板文本復制到 vim,請按Ctrl p

注意:這是針對 ubuntu 系統的。

以下是可行的步驟:

  1. 在 vim 中打開源文件。
  2. shift v進入可視模式
  3. 通過移動向上/向下箭頭鍵選擇行數。
  4. 一旦要復制的文本突出顯示,然后按以下鍵將其拉(復制)到 + 注冊: + y
  5. 現在在 vim 中打開目標文件。
  6. 按以下鍵將步驟 4 中復制的文本粘貼到目標文件中: Ctrl v

在對該線程進行了一些有用的評論后,我決定添加自己的設置,到目前為止效果很好:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM