* और + रजिस्टरों के लिए कस्टम कमांड को परिभाषित करें


9

अगर मैं xterm_clipboardफीचर के साथ Vim बिल्ड का उपयोग कर रहा हूं तो सिस्टम क्लिपबोर्ड सामग्री +रजिस्टर के माध्यम से उपलब्ध है ।

अगर मैं जो निर्माण कर रहा हूं उसमें यह सुविधा नहीं है, तो क्या मैं "+सिस्टम क्लिपबोर्ड को पुनः प्राप्त करने और सेट करने के लिए अपने कस्टम प्रोग्राम को रजिस्टर कॉल कर सकता हूं ( xsel -boऔर xsel -biइसी तरह xclip)? इसी तरह "*कॉल xsel -poऔर के साथ xsel -pi

मुद्दा यह है "+pकि सुविधा उपलब्ध है या नहीं, चिंता किए बिना कुछ टाइप करने में सक्षम होना चाहिए । टंकण :r !xsel -b<Enter>नहीं है मैं क्या देख रहा हूँ: मैं काम करने के लिए एक ही कीस्ट्रोक्स चाहते हैं, और मैं पेस्ट क्या "सही" रजिस्टरों के लिए उपलब्ध है का पालन करने के वेरिएंट चाहते हैं ( P, gp, ...)।

बोनस: क्या मैं अन्य रजिस्टर नामों के लिए कस्टम कमांड परिभाषित कर सकता हूं?

जवाबों:


7

कुछ <expr>मानचित्रण यहां काम करने में सक्षम होना चाहिए। मूल संरचना होगी

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)

समारोह के सभी रूपों को संभालने के लिए विस्तारित किया जा करने की आवश्यकता होगी p, P, gp, आदि लेकिन यह एक अच्छी शुरुआत होना चाहिए।


यह सही रास्ते पर लगता है, लेकिन यह काम नहीं कर रहा है। एक सादा p(बिना पूर्ववर्ती "और पंजीकृत नाम के) "pस्थिति रेखा में प्रकट होने के अलावा कुछ भी नहीं करता है । "apके बराबर है a, "bpbeeps, ... मुझे तर्क नहीं मिलता है। "+बीप्स तुरंत, मुझे यह कहने की ज़रूरत नहीं है कि मेरा मतलब है +या *एक रजिस्टर नाम के रूप में।
गिल्स एसओ- बुराई को रोकना '

1
इन मूलभूत समस्याओं को हल करने पर मान लिया जाता है कि क्या आज्ञाओं की एक विस्तृत सूची है जो मुझे ओवरराइड करने की आवश्यकता होगी? सेट चुनौतीपूर्ण लग रहा है, खासकर अगर मैं यांकिंग का समर्थन करना चाहता हूं।
गिल्स एसओ- बुराई को रोकना '

@ गैर - + / * रजिस्टरों के साथ व्यवहार को ठीक करने के लिए अपडेट किया गया। "+जब आपकी विम के साथ समस्या -xterm_clipboardअधिक कठिन होती है क्योंकि यह इस फ़ंक्शन के लिए कभी नहीं होती है। अमान्य रजिस्टर निर्दिष्ट करना ( +) कमांड को निरस्त करता है। एसओ, ऐसा लगता है कि व्यवहार वास्तव में उलटा है इसलिए मानचित्र को "+या "*तो उपयोगकर्ता द्वारा निर्दिष्ट कमांड को संभालना होगा ...
jamessan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.