为什么Vim for Debian不用剪贴板就可以编译?


20

我很好奇为什么Vim的默认Debian软件包(通常通过来的软件包sudo apt-get install vim)没有使用剪贴板支持进行编译?

常规-clipboard或未-Xterm-clipboard启用,为什么

在没有安装X服务器的Debian安装中,可能有理由不包括-Xterm-clipboard,而是常规的-clipboard

对于为什么这样做的任何见解都会有所帮助。

澄清:我知道我可以用这些标志编译Vim,我只想知道为什么默认情况下不启用它们。


是什么提供剪贴板(如果不是X)?xterm-clipboard是另一回事;这是针对xterm提供的缓冲区的(例如,参见askubuntu.com/a/541730/158442)。
muru

但是xterm-clipboard也是X服务器提供的功能
Christian Brabandt

2
@muru不存在类似xterm的缓冲区。X剪切缓冲区是X Server的一项功能,它提供了X客户端之间的某些进程间通信方式,通常称为剪贴板(在常规桌面客户端中为Ctrl-V,CTRL-X,Ctrl-V ),另一种是鼠标中键粘贴之前用鼠标选择的任何内容。尽管这称为xterm_clipboard,但与xterm无关。
Christian Brabandt

2
@ChristianBrabandt嗯,我一直认为这个剪切缓冲区是xterm的东西,例如屏幕的粘贴缓冲区,并且此功能支持此类缓冲区。感谢您的纠正!
muru

1
我心目中的smartass会告诉您安装Neovim,因为它放弃了几乎所有的编译标志,而只希望在运行时尝试一下。例如,剪贴板使用xsel / xclip而不是针对一堆X库进行链接。
另一个用户

Answers:


24

包装说明包含

该软件包包含一个带有一组标准功能的vim版本。该软件包不提供Vim的GUI版本。如果需要更多(或更少),请参见其他vim- *软件包。

我相信这样做是因为使用剪贴板会涉及到X库的链接,这意味着,如果不安装通常在服务器(或最低限度)的环境中不想要的一堆X依赖项,就无法安装vim。

这意味着,如果要使用剪贴板功能,则应安装例如软件包vim-gtk(尽管其名称也包含非gui vim)。

由于类似的原因,该软件包vim-nox存在。它不依赖于X服务器,但是需要其他库,例如liblua,libperl,libpython,因此确实安装了这些其他依赖项(在服务器环境中您可能也不需要),但是没有X库(例如GTK或X11) GUI和剪贴板所需的)。


啊,我想您可以在非GUI安装的Linux上复制粘贴。这就是为什么我认为该标志-clipboard是Vim访问系统复制粘贴寄存器的原因。(您可以使用X-Copy,但我的意思是愚蠢的)
Gustav Blomqvist

1
@GustavBlomqvist:您可以通过使用常规命令行剪贴板,即选择文本,单击鼠标中键进行粘贴以及使用GPM绑定。
Arafangion

2

VIM旨在成为可在所有系统上“正常工作”的便携式编辑器。通过使默认版本使用剪贴板功能,它将需要针对X11库进行链接,并且需要针对台式机与服务器(无需预先安装的X11 / xorg)构建单独的VIM版本。这就是提供vimvim-gtk软件包的原因。

如果您想编译VIM的命令行版本(我一直在Guake / yakuake中使用它),这是基于Debian的系统的构建/安装脚本。

# Get the compile-dependencies of vim
sudo apt-get -y build-dep vim
# Install the "checkinstall" tool so the "make install" step is
# wrapped and the result is a .deb file that can be removed later by
# your package manager rather than having to hunt down every file deployed
# by "make install", which might not be possible if it overwrites existing
# system files.
sudo apt-get -y install checkinstall
# Install python dev
sudo apt-get -y install python-dev
# Install xorg dev
sudo apt-get -y install xorg-dev
# Install git
sudo apt-get -y install git
# Get the source
git clone https://github.com/vim/vim.git vim_source
# Remove ./configure cache in case we have to run this twice due to permissions
# related issues.
rm vim_source/src/auto/config.cache
# Compile it
cd vim_source
make clean
./configure \
    --enable-perlinterp=dynamic \
    --enable-pythoninterp=dynamic \
    --enable-rubyinterp=dynamic \
    --enable-cscope \
    --enable-gui=auto \
    --enable-gtk2-check \
    --enable-gnome-check \
    --with-features=normal \
    --with-x \
    --with-compiledby="DevNull <darkstar@/dev/null>" \
    --with-python-config-dir=/usr/lib/python2.7/config-$(uname -m)-linux-gnu
# Build quickly (8 parallel jobs, hope your system doesn't get overwhelmed)
make -j8
# Need root to install
sudo checkinstall
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.