如何在 Vim 中將文本複製到剪貼板

在本文中,我將向您展示如何將文本從 Vim 編輯器複製到另一個程序。 我們的目標是將內容複製到剪貼板。

在 vim 中使用複制和粘貼更容易使用 yank 命令或使用寄存器。 但是當涉及到復製到另一個應用程序時,比如瀏覽器,我們需要額外的步驟。 在這裡,我將解釋兩種將文本複製到系統剪貼板的方法。

  • 通過安裝 vim-gtk
  • 通過編譯 Vim

方法一:通過安裝vim-gtk

那麼,我們如何從 Vim 複製到另一個 Vim 窗口或瀏覽器? 默認情況下,Vim 沒有這種訪問系統剪貼板的能力,但獲得這種能力實際上非常簡單。 一種方法是編譯一個可以訪問剪貼板的 Vim 版本,另一種懶惰的方法是安裝 虛擬機 (也稱為 vim-gtk)。

Gvim 是 Vim 的圖形版本。 當你安裝 gvim 時,它會給普通終端 vim 複製和粘貼到剪貼板的能力。 換句話說,它使您能夠複製到與系統剪貼板相對應的特殊寄存器。 特殊寄存器是一個 +. 它實際上只是一個可以復制內容的寄存器,它會自動將其放入系統剪貼板。

要安裝 gvim(或 vim-gtk),請運行:

$ sudo apt-get install vim-gtk

讓我們考慮一個 example 複製鏈接地址並將其粘貼到瀏覽器。 請打開我們的 example 文件並導航到最後一行。 現在,您必須運行以下命令:

V"+y

在哪裡:
+ 是您系統的剪貼板

打開您的瀏覽器並按 ctrl+v 與您通常粘貼的方式相同,然後查看現在已粘貼。我們可以訪問該站點並從中獲取一些內容,複製並粘貼到我們的 Vim。 讓我們像往常一樣複製 ctrl+c. 現在,我們可以通過運行以下命令在 Vim 中訪問這個複制的行:

"+p

您會看到它成功地將內容從瀏覽器粘貼到 Vim。

方法二:通過編譯Vim

另一種方法是編譯 Vim 以支持剪貼板複製。 默認的 Vim 並沒有它。 因此,要檢查此選項是否有效,請運行:

vim --version | grep .xterm_clipboard -o

如果你會得到這樣的東西: -xterm_clipboard

這意味著不支持複製到剪貼板,您必須編譯 Vim。 值得一提的是,只有帶有 GUI 的 Vim 版本才支持剪貼板訪問。 因此,為了重新編譯 Vim,您必須首先獲取 Vim 的編譯依賴項並安裝 mercurial:

$ sudo apt-get build-dep vim
$ sudo apt-get install mercurial

現在,獲取源:

$ sudo hg clone https://hg.256bit.org/vim

如果您已經擁有此存儲庫克隆,請更新它:

$ sudo hg pull
$ sudo hg update

然後檢查您是否有最新版本:

$ hg summary

現在,您必須編譯它:

cd vim_source

./configure
--enable-perlinterp=dynamic
--enable-pythoninterp=dynamic
--enable-rubyinterp=dynamic
--enable-cscope
--enable-gui=auto
--enable-gtk2-check
--enable-gnome-check
--with-features=huge
--with-x
--with-compiledby="YourName <[email protected]>"
--with-python-config-dir=/usr/lib/python2.7/config

make && sudo make install

這將安裝在 /usr/local 小路。 請注意,您最終會得到兩個 vim: /usr/bin/vim 無法訪問剪貼板:

vim 安裝在 /usr/bin/vim

/usr/local/bin/vim 可以訪問您的剪貼板:

vim 安裝在 /usr/local/bin/vim 安裝在 /usr/local/bin/

和 gvim /usr/local/bin/gvim (帶有符號鏈接到 /usr/local/bin/vim. 無論您是否處於 GUI 模式,它都將支持剪貼板。 而且您始終可以使用顯式路徑運行舊的。

全部編譯完成後,您可以使用 /usr/local/bin/vim 使用“+”寄存器打開任何文件並複制粘貼文本,就像我們之前考慮的那樣。

如何將文本存儲到寄存器中

寄存器是系統中的小存儲空間,可以存儲您提取或複制的內容。 您可以使用許多寄存器來存儲不同的 yanked 內容。

使用以下命令將選擇一行並存儲到“a”寄存器:

V"ay

在哪裡:

V(大寫 V)——用於標記整行
” (雙引號) – 訪問寄存器
a – 註冊名
y – 猛拉(複製)

而對於 ‘b’ 寄存器

V”by

現在,我們已經在兩個不同的寄存器中保存了文本,我們可以將它們粘貼出來,也可以以不同的順序粘貼它們。 例如,我們可以通過運行以下命令粘貼“b”寄存器:

“bp

在哪裡:

p – 粘貼

結論

在本文中,我們考慮瞭如何在 Vim 中啟用對剪貼板的訪問的兩種方法。 這兩個選項都是有效的,而且安裝 vim-gtk 包似乎比編譯 Vim 更快更高效。