Eu descobri os problemas aqui que pareciam levar a que isso não funcionasse. Primeiramente, eu tinha um ~/.Xdefaults
e ~/.Xmodmap
que são apenas excessivos de usar os mesmos dotfiles em distribuições Linux. Enquanto nenhum destes parece mexer com qualquer configuração da área de transferência diretamente, removê-los parecia importar.
Definir as opções de sincronização de papelão no X11 é obrigatório. Eu finalmente decidi sobre essas configurações:
# Clipboard syncing
defaults write org.macosforge.xquartz.X11 sync_clipboard_to_pasteboard -boolean true
defaults write org.macosforge.xquartz.X11 sync_pasteboard -boolean true
defaults write org.macosforge.xquartz.X11 sync_pasteboard_to_clipboard -boolean true
defaults write org.macosforge.xquartz.X11 sync_pasteboard_to_primary -boolean true
defaults write org.macosforge.xquartz.X11 sync_primary_on_select -boolean false
# Run xterm by default (without this vim's clipboard doesn't work)
defaults write org.macosforge.xquartz.X11 app_to_run -string "/opt/X11/bin/xterm"
# Set default shell
defaults write org.macosforge.xquartz.X11 login_shell -string "/usr/local/bin/zsh"
O xterm em execução por padrão é obrigatório. O X11 não parece querer compartilhar sua área de transferência com a área de trabalho do OS X até que o xterm tenha sido executado pelo menos uma vez. Ele nem precisa ser aberto, só tem que ter executado esta sessão. Esta configuração é o padrão para o X11, mas algumas pessoas o alteram para que o xterm não inicie toda vez que ele iniciar o X11. Se você executar o vim com +clientserver
pela primeira vez antes de o XQuartz / X11 abrir, ele irá ignorar esta configuração quando abrir o X11. Se o xterm não for executado antes de você iniciar o vim, as pranchetas não serão sincronizadas e você terá que reiniciar o vim para corrigi-lo. Eu escolhi abrir o XQuartz por padrão toda vez que eu logar e escondê-lo.
Você precisa configurar a área de transferência do vim corretamente. Essas configurações funcionam:
if has("clipboard")
set clipboard=unnamed " copy to the system clipboard
if has("unnamedplus") " X11 support
set clipboard+=unnamedplus
endif
endif
A adição de unnamedplus
às configurações da área de transferência usa os dois registros *
e +
para cada yank. Essas configurações garantem que a área de transferência seja definida como unnamed
se apenas +clipboard
for configurada e como unnamed,unnamedplus
se você tiver +xterm_clipboard
. Eu encontrei esta opção aqui .
Então você pode simplesmente instalar o Vim via homebrew com:
brew install vim --with-client-server
Infelizmente, o X11 ainda não parece funcionar de forma consistente, por isso desisti desta configuração.