* Ve + kayıtları için özel komutlar tanımlama


9

Bu xterm_clipboardözellik ile bir Vim derlemesi kullanıyorsanız , sistem panosu içeriği +kayıt yoluyla kullanılabilir .

Kullandığım derleme bu özelliğe sahip değilse "+, sistem panosunu almak ve ayarlamak ( xsel -bove xsel -biaynı şekilde xclip) için kayıt özel çağrılarımı arayabilir miyim? Aynı şekilde birlikte "*aramaya xsel -pove xsel -pi.

Mesele, "+pözelliğin kullanılabilir olup olmadığını düşünmek zorunda kalmadan benzer bir şey yazabilmektir . Yazma :r !xsel -b<Enter>aradığım ne değildir: Ben işe aynı tuş vuruşlarını istiyorum, ve yapıştırma “true” kayıtları için kullanılabilir olanlara takip etmek varyantları istiyorum ( P, gp, ...).

Bonus: Diğer kayıt adları için özel komutlar tanımlayabilir miyim?

Yanıtlar:


7

Burada birkaç <expr>haritalama yapabilmelidir. Temel yapı

function! ClipboardOrXclip(command, register)
    if a:register !~ '[+*]' || has('xterm_clipboard') || has('gui_running')
        " Just return the original command if the clipboard is accessible
        " or it's not a register that should be handled by xsel
        return a:command
    endif
    if a:register == '+'
        return "<Esc>:r !xsel -bo<CR>"
    else
        return "<Esc>:r !xsel -po<CR>"
    endif
endfunction

nnoremap <silent> <expr> p ClipboardOrXclip('p', v:register)

Fonksiyon tüm varyasyonlarını işlemek için genişletilebilir gerekir p, P, gpvb ama bu iyi bir başlangıç olmalıdır.


Bu doğru yolda görünüyor, ama çalışmıyor. Bir düz p(önceki "ve kayıt adı olmadan ) "pdurum satırında make dışında bir şey yapmaz . "apeşittir a, "bpbip sesi,… Ben mantığı anlamıyorum. "+hemen bip sesi çıkarır, kastettiğimi +veya *bir kayıt adı olduğunu söyleyemiyorum bile .
Gilles 'SO- kötü olmayı bırak'

1
Bu temel sorunların çözüldüğünü varsayarsak, geçersiz kılmam gereken kapsamlı bir komut listesi var mı? Set göz korkutucu görünüyor, özellikle de yanmayı da desteklemek istiyorsam.
Gilles 'SO- kötü olmayı bırak'

@Gilles + / * olmayan kayıtlarla davranışı düzeltmek için güncellendi. "+Vim'iniz olduğunda problem -xterm_clipboarddaha zordur çünkü asla bu işleve ulaşmaz. Geçersiz bir register ( +) belirtilmesi komutu iptal eder. Yani, davranış aslında ters çevrilmesi gerekir gibi görünüyor yani "+veya harita "*ve daha sonra kullanıcı tarafından belirtilen komutu işlemek ...
jamessan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.