首发于方寸之间

以前在应用 Vim 编写代码的时候就发现,Vim
yank 的内容无奈间接进入零碎剪切板,略微 Google 了以下发现如同须要应用第三方软件(Linux 上的 xclip 或者 MacOS 上的 pbcopy),懒得折腾,就新开一个 Terminal,而后 cat 进去文件内容,拷贝须要的内容而后应用(没想到吧;D)。

最近在折腾 Vim 环境的时候,又发现了这个问题,这下不能忍了,所以索性找找有没有简略的解决办法。最初勉强找到了几个我认为比较简单的解决办法。

0. 确认是否带有剪切板个性

vim --version | grep clipboard

如果输入+clipboard代表有剪切板个性,祝贺你,能够间接下拉进入文末;如果呈现-clipboard则阐明没有,那你能够接着往下看。

1. 应用 gvim

间接装置 gvim,带有命令行版本的 Vim 是反对剪切板个性的。

sudo pacman -S gvim

2. 应用 Arch Linux 社区的第三方源仓库

鲁迅曾说:遇事不决,上 Arch wiki。

官网 wiki 的 Vim 界面提到了一个 Unofficial Repository
herecura,这是一个集体保护的源仓库,外面是一些集体编译的 Linux 软件。

将以下内容退出/etc/pacman.conf

[herecura]Server = https://repo.herecura.eu/$repo/$arch

而后装置vim-cli

sudo pacman -Syusudo pacman -S vim-cli

3. AUR 装置

  • 如果你对 AUR 理解比拟多,能够尝试本人构建 PKGBUILD 文件。
  • 如果不理解也没关系,咱们能够间接找现成的。能够抉择间接批改 Arch Linux 官网的 PKGBUILD,在这根底上退出 clipboard 性能反对。

i. 克隆官网的 Vim 包构建仓库:

git clone https://gitlab.archlinux.org/archlinux/packaging/packages/vim.git

ii. 批改PKGBUILD文件,批改--with-xyes,为了节省时间,能够去掉 gvim 的构建。

<details>
<summary>点击这里查看批改后的PKGBUILD内容</summary>

点击这里复制

pkgbase=vimpkgname=('vim' 'vim-runtime')pkgver=9.0.1678_versiondir=90pkgrel=1pkgdesc='Vi Improved, a highly configurable, improved version of the vi text editor'url='https://www.vim.org'arch=('x86_64' 'x86_64_v3')license=('custom:vim')makedepends=('glibc' 'libgcrypt' 'gpm' 'python' 'ruby' 'libxt' 'gtk3' 'lua'             'gawk' 'tcl' 'zlib' 'libcanberra')source=(https://github.com/vim/vim/archive/v${pkgver}/${pkgbase}-${pkgver}.tar.gz fix-perl-build.patch        vimrc        archlinux.vim        vimdoc.hook)sha256sums=('e0b52a997b4f6180c5d8a5dae717075d99650c3e2e7761d1878a3dd7011ec315'            'f79c2afd26bbe0b21375293203d8f0e8dad2424146014ceafc4e8eca6ecf7d39'            'b16e85e457397ab2043a7ee0a3c84307c6b4eac157fd0b721694761f25b3ed5b'            'cc3d931129854c298eb22e993ec14c2ad86cc1e70a08a64496f5e06559289972'            '8e9656934d9d7793063230d15a689e10455e6db9b9fe73afa0f294792795d8ae')sha512sums=('c5ffb7ca56ff4eee70f06599dd84db2eb28ddadac229d4f7faf01174805923636a4ce61486bdf5a47910c929613dc9b9290dfc9288006222b4bc4ac891548bb8'            '184dd232db5b4a346e9751e58ad0a9b2f60d50d1a2aa2050415d288445606d80c239745f0d8987ff822d2acf6826104a81f8e59c8f1785095d1f319c0fe4abf0'            '4b5bed0813f22af9e158ea9aa56a4a9862dd786ba2d201f20159ccf652da6190164aaed0b6b7217d578f7b25c33a8adcc307bfcf3caa8d173a7ff29e2a00fee7'            'fe091d289d876f45319c898f6021ef86d6a238b540c225a279c46efc5c36fa7d868cd0cee73a111811c4be90df160f85340bb251be3a437727dbe5c699950363'            'a02ad0d66f300160911aeb81d8886c6c558436ac4ee3fcd161dd65c6b1e5d1f41b9005a7f5bb5ba68d57027fc1c8e43daabf055bd6207fb5a216a67f758df8d1')prepare() {  (cd vim-${pkgver}/src    patch -Np2 -i ../../fix-perl-build.patch    # define the place for the global (g)vimrc file (set to /etc/vimrc)    sed -E 's|^.*(#define SYS_.*VIMRC_FILE.*").*$|\1|g' -i feature.h    sed -E 's|^.*(#define VIMRC_FILE.*").*$|\1|g' -i feature.h    autoconf  )  cp -a vim-${pkgver} gvim-${pkgver}}build() {  echo "Building vim..."  (cd vim-${pkgver}    ./configure \      --prefix=/usr \      --localstatedir=/var/lib/vim \      --with-features=huge \      --with-compiledby='Arch Linux' \      --enable-gpm \      --enable-acl \      --with-x=yes \ # 这里改为yes      --disable-gui \      --enable-multibyte \      --enable-cscope \      --enable-netbeans \      --enable-perlinterp=dynamic \      --enable-python3interp=dynamic \      --enable-rubyinterp=dynamic \      --enable-luainterp=dynamic \      --enable-tclinterp=dynamic \      --disable-canberra    make  )}check() {  cd vim-${pkgver}  TERM=xterm make -j1 test}package_vim-runtime() {  pkgdesc+=' (shared runtime)'  optdepends=('sh: support for some tools and macros'              'python: demoserver example tool'              'gawk: mve tools upport')  backup=('etc/vimrc')  cd vim-${pkgver}  make -j1 VIMRCLOC=/etc DESTDIR="${pkgdir}" install  # man and bin files belong to 'vim'  rm -r "${pkgdir}"/usr/share/man/ "${pkgdir}"/usr/bin/  # Don't forget logtalk.dict  install -Dm 644 runtime/ftplugin/logtalk.dict \    "${pkgdir}"/usr/share/vim/vim${_versiondir}/ftplugin/logtalk.dict  # rc files  install -Dm 644 "${srcdir}"/vimrc "${pkgdir}"/etc/vimrc  install -Dm 644 "${srcdir}"/archlinux.vim \    "${pkgdir}"/usr/share/vim/vimfiles/archlinux.vim  # no desktop files and icons  rm -r "${pkgdir}"/usr/share/{applications,icons}  # license  install -dm 755 "${pkgdir}"/usr/share/licenses/vim-runtime  ln -s /usr/share/vim/vim${_versiondir}/doc/uganda.txt \    "${pkgdir}"/usr/share/licenses/vim-runtime/license.txt  # pacman hook for documentation helptags  install -Dm 644 "${srcdir}"/vimdoc.hook "${pkgdir}"/usr/share/libalpm/hooks/vimdoc.hook}package_vim() {  # TODO: move perl back into optdeps after --enable-perlinterp=dynamic  #       starts working again (https://github.com/vim/vim/issues/10512)  depends=("vim-runtime=${pkgver}-${pkgrel}" 'gpm' 'acl' 'glibc' 'libgcrypt' 'zlib' 'perl')  optdepends=('python: Python language support'              'ruby: Ruby language support'              'lua: Lua language support'              #'perl: Perl language support'              'tcl: Tcl language support')  conflicts=('gvim' 'vim-minimal')  provides=('xxd' 'vim-minimal' 'vim-plugin-runtime')  replaces=('vim-minimal')  cd vim-${pkgver}  make -j1 VIMRCLOC=/etc DESTDIR="${pkgdir}" install  # provided by (n)vi in core  rm "${pkgdir}"/usr/bin/{ex,view}  # delete some manpages  find "${pkgdir}"/usr/share/man -type d -name 'man1' 2>/dev/null | \    while read _mandir; do    cd "${_mandir}"    rm -f ex.1 view.1 # provided by (n)vi    rm -f evim.1    # this does not make sense if we have no GUI  done  # Runtime provided by runtime package  rm -r "${pkgdir}"/usr/share/vim  # remove gvim.desktop as not included  rm "${pkgdir}"/usr/share/applications/gvim.desktop  # license  install -Dm 644 runtime/doc/uganda.txt \    "${pkgdir}"/usr/share/licenses/${pkgname}/license.txt}# vim: ts=2 sw=2 et:

</details>

iii. 构建并装置:

makepkg -si

4. 源码装置

  1. 装置依赖
sudo pacman -S glibc libgcrypt gpm python ruby libxt gtk3 lua gawk tcl zlib gettext pkgconfig# 须要音频反对的,装置这个依赖sudo pacman -S libcanberra
  1. 克隆源码
https://github.com/vim/vim.git
  1. 配置
./configure --prefix=/usr --localstatedir=/var/lib/vim \        --with-features=huge --enable-gpm --enable-acl --with-x=yes \        --disable-gui --enable-multibyte --enable-cscope \        --disable-netbeans --enable-perlinterp=dynamic \        --enable-python3interp=dynamic --enable-rubyinterp=dynamic \        --enable-luainterp=dynamic --mandir=/usr/share/man        #################### 须要音频反对的退出以下配置:        --enable--canberra
  1. 编译生成
# 默认生成make# 测试make test# 增加额定配置make reconfig# 测试make test# 装置sudo make install

5. 测试

查看 patch 版本及是否蕴含 clipboard 个性

$ vim --version | grep patchIncluded patches: 1-1683$ vim --version | grep clipboard+clipboard         +keymap            +printer           +vertsplit+eval              -mouse_jsbterm     -sun_workshop      +xterm_clipboard

6. 参考链接

https://github.com/vim/vim
https://github.com/ycm-core/YouCompleteMe/wiki/Building-Vim-from-source
https://gitlab.archlinux.org/archlinux/packaging/packages/vim/-/blob/main/PKGBUILD