Почему Vim для Debian компилируется без буфера обмена?

20

Мне любопытно, почему стандартный пакет Debian для vim (тот, который вы обычно получаете sudo apt-get install vim) не скомпилирован с поддержкой буфера обмена?

Ни штатный, -clipboardни -Xterm-clipboardвключен, почему ?

Может быть причина не включать -Xterm-clipboard в установки Debian без установленного X-сервера, но обычную -clipboard?

Любое понимание, почему это было бы полезно.

( Уточнение: я знаю, что могу скомпилировать Vim с этими флагами, я просто хочу знать, почему они не включены по умолчанию. )

Густав Бломквист
источник
Что обеспечивает буфер обмена, если не X? xterm-clipboard - это совсем другое; это относится к буферам, которые предоставляет xterm (см., например, askubuntu.com/a/541730/158442 ).
Муру,
но xterm-clipboard также является функцией, предоставляемой X-сервером
Кристиан Брабанд
2
@muru не существует такой вещи, как xterm-подобный буфер. Вы имеете в виду буферы X-Cut, которые являются функцией X-сервера, обеспечивающего некоторые средства межпроцессного взаимодействия между X-клиентами, один из которых обычно называется буфером обмена (Ctrl-V, CTRL-X, Ctrl-V в обычных клиентах для настольных ПК ) и другой - вставка средней мышью того, что было выделено ранее мышью. Хотя это называется xterm_clipboard, оно не имеет ничего общего с xterm.
Кристиан Брабандт,
2
@ChristianBrabandt да, я всегда думал, что этот вырезанный буфер был чем-то из xterm, как буфер вставки экрана, и эта функция поддерживала такие буферы. Спасибо за исправление!
Муру
1
Умник во мне сказал бы вам установить Neovim, так как он обходится без почти всех флагов компиляции в пользу простой проверки во время выполнения. Например, буфер обмена использует xsel / xclip вместо связывания с кучей библиотек X.
еще один пользователь

Ответы:

24

Описание пакета содержит

Этот пакет содержит версию vim, скомпилированную с довольно стандартным набором функций. Этот пакет не предоставляет версию графического интерфейса Vim. Посмотрите другие пакеты vim- *, если вам нужно больше (или меньше).

Я считаю, что это было сделано, потому что использование буфера обмена включало бы соединение с библиотеками X, что означает, что вы не можете установить vim, не установив также кучу зависимостей X, которые обычно не нужны в серверной (или минимальной) среде.

Это означает, что если вы хотите использовать функцию буфера обмена, вы должны установить, например, пакет vim-gtk(который, несмотря на его название, также содержит не GUI vim).

По аналогичной причине пакет vim-noxсуществует. Он не зависит от X-сервера, но нуждается в дополнительных библиотеках, таких как liblua, libperl, libpython, и поэтому устанавливает эти дополнительные зависимости (которые вам, вероятно, также не нужны в серверной среде), но не содержит библиотек X (например, GTK или X11). нужен для графического интерфейса и буфера обмена).

Кристиан Брабандт
источник
Аааа, я думал, что вы можете скопировать и вставить в Linux без установки графического интерфейса. Вот почему я думал, что флаг предназначен -clipboardдля Vim для доступа к системному регистру копирования-вставки. (Вы можете использовать X-Copy, но я имею в виду под deafult)
Густав Blomqvist
1
@GustavBlomqvist: Вы можете с помощью обычных буферов обмена командной строки, т. Е. Выбрать текст, щелкнуть средней кнопкой мыши и использовать привязки GPM.
Арафангион,
2

VIM предназначен для переносимого редактора, который «просто работает» на всех системах. При использовании версии по умолчанию, использующей функциональность буфера обмена, необходимо будет связать ее с библиотеками X11, а для сборок для настольных компьютеров и серверов (без предустановленного X11 / xorg) потребуется скомпилировать отдельную версию VIM. Вот почему vimи vim-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
облако
источник