मैं पहली बार ट्विटविम का उपयोग कर रहा हूं। वहाँ के सभी URL को देखकर मुझे आश्चर्य हुआ कि क्या आपके पसंदीदा ब्राउज़र में कर्सर के नीचे URL खोलने का कोई तरीका है या कोई निर्दिष्ट है?
मैं पहली बार ट्विटविम का उपयोग कर रहा हूं। वहाँ के सभी URL को देखकर मुझे आश्चर्य हुआ कि क्या आपके पसंदीदा ब्राउज़र में कर्सर के नीचे URL खोलने का कोई तरीका है या कोई निर्दिष्ट है?
जवाबों:
अपडेट किया गया: tpope के ट्वीट से आज
प्रेस करें gx। आप ब्राउज़र को कस्टमाइज़ कर सकते हैं। सूक्ति और मैक ओएस एक्स पर यह पहले से ही उपयोग gnome-open/ है open। आम तौर पर आप अपनी g:netrw_browsex_viewerइच्छानुसार कुछ भी सेट कर सकते हैं।
मूल उत्तर:
याद नहीं कि मुझे यह फंक्शन कहाँ से मिला। Url में हैश (#) के साथ एक बग है, लेकिन फ़ंक्शन पर्याप्त रूप से काम करता है कि मैं इसे ठीक करने में परेशान नहीं करूंगा।
function! HandleURL()
let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;]*')
echo s:uri
if s:uri != ""
silent exec "!open '".s:uri."'"
else
echo "No URI found in line."
endif
endfunction
map <leader>u :call HandleURL()<cr>
ध्यान दें: यदि आप मैक पर नहीं हैं, तो लिनक्स के लिए gnome-open/ xdg-openया विंडोज के लिए 'अपने वेब ब्राउजर के लिए पथ' का उपयोग करें
gxबहुत शक्तिशाली है, धन्यवाद! यह उपयुक्त एप्लिकेशन ™ के साथ फाइलें भी खोलता है।
यदि आप विम 7.4 या उसके बाद का उपयोग कर रहे हैं, तो सामान्य मोड में, URL के नीचे अपना कर्सर रखें, फिर क्लिक करें gx, URL ब्राउज़र में स्वचालित रूप से खुल जाएगा
:h netrw_gx: * विंडोज 32 या 64 के लिए, url और FileProtocolHandler dll का उपयोग किया जाता है। * ग्नोम के लिए (सूक्ति-खुले के साथ): सूक्ति-खुले का उपयोग किया जाता है। * KDE के लिए (kfmclient के साथ): kfmclient का उपयोग Mac OS X के लिए किया जाता है: खुले का उपयोग किया जाता है। * अन्यथा netrwFileHandler प्लगइन का उपयोग किया जाता है।
मैं इस स्क्रिप्ट का उपयोग keywordकर्सर के लिए gooogle खोजने के लिए करता हूं :
nmap <leader>g :call Google()<CR>
fun! Google()
let keyword = expand("<cword>")
let url = "http://www.google.com/search?q=" . keyword
let path = "C:/Program Files/Mozilla Firefox/"
exec 'silent !"' . path . 'firefox.exe" ' . url
endfun
आपको कर्सर के नीचे url निकालने getline('.')और उपयोग करना चाहिए matchstr()। बाकी वही है।
निम्न लाइन को .vimrc फ़ाइल में जोड़ें:
nmap <leader><space> yiW:!xdg-open <c-r>" &<cr>
तो सामान्य मोड में इसे दबाने पर यह चालू शब्द का चयन करता है और इसे वेब ब्राउज़र में पते के रूप में खोलता है।
डिफ़ॉल्ट रूप से लीडर \ _ है (लेकिन मैंने इसे मैप किया है, इसके साथ let mapleader = ",")। इसी तरह, इमैप का उपयोग करके आप कुछ महत्वपूर्ण अनुक्रम को इन्सर्ट मोड में मैप कर सकते हैं (लेकिन फिर, यदि यह 2 मुख्य अनुक्रम हैं, तो यह संभवतः कुछ डिफ़ॉल्ट व्यवहार को ओवरराइड कर देगा)।
ठीक है, इसलिए @tungd और @kev के उत्तर का उपयोग करते हुए और एक छोटे से शोध को मैंने इस स्क्रिप्ट के साथ समाप्त किया, जो कि जिस तरह से आपकी जरूरत है उसी तरह काम करता है। जैसे @tungd ने कहा कि # एक समस्या दे सकता है अगर एक url के अंदर लेकिन मैं इसके साथ अच्छा हूं, अगर किसी के पास url के लिए बेहतर अभिव्यक्ति है तो उसका स्वागत किया जाएगा।
function! OpenUrlUnderCursor()
let path="/Applications/Safari.app"
execute "normal BvEy"
let url=matchstr(@0, '[a-z]*:\/\/[^ >,;]*')
if url != ""
silent exec "!open -a ".path." '".url."'" | redraw!
echo "opened ".url
else
echo "No URL under cursor."
endif
endfunction
nmap <leader>o :call OpenUrlUnderCursor()<CR>
मुझे इस पार्टी के लिए बहुत देर हो चुकी है, लेकिन यहां ऐसा करने का एक और तरीका है जो विशेष रूप से विंडोज 7 पर काम करता है।
दोनों को स्थापित करें vim-खोल और vim-विविध vim में मैं कभी भयानक के माध्यम से ऐसा करने की सलाह देते हैं पैथोजन बस प्लगइन और फिर cd ~/vimfiles/bundle & git clone git@github.com:xolox/vim-misc.git & git clone git@github.com:xolox/vim-shell.gitmsysgit से। ( ये दोनों प्लगइन्स आमतौर पर विंडोज़ में किसी भी अतिरिक्त कमांड प्रॉम्प्ट या अन्य मूर्खतापूर्ण बकवास बनाने के बिना आपके डिफ़ॉल्ट ब्राउज़र में यूआरएल खोलते हैं। आप इस तरह से विम में यूआरएल खोल सकते हैं: :Open http://duckduckgo.comइसे आज़माएं। आप इसे पसंद करेंगे। )
कुछ विम मैपिंग बनाएं ताकि आप ब्राउज़र में कर्सर के नीचे की रेखा को जल्दी से प्राप्त कर सकें। मैं इसे आपके लिए मैप करूंगा (मेरे लिए, यह ,uसामान्य मोड से है)। ऐसे:
nnoremap u: "ओपन" .getline ("" पर अमल करें)
इस मैपिंग का उपयोग करने के लिए, सामान्य मोड + u से अपनी लीडर कुंजी टाइप करें। इसे आपके कर्सर के नीचे की रेखा को पढ़ना चाहिए और इसे अपने डिफ़ॉल्ट ब्राउज़र में खोलना चाहिए।
यह स्क्रिप्ट का बेहतर संस्करण है जो मूल रूप से @tungd द्वारा यहां https://stackoverflow.com/a/9459366/7631731 द्वारा प्रस्तावित किया गया है । Vim संदर्भ रखता है और "#" युक्त URLS को सही ढंग से संभालता है।
function! HandleURL()
let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;()]*')
let s:uri = shellescape(s:uri, 1)
echom s:uri
if s:uri != ""
silent exec "!open '".s:uri."'"
:redraw!
else
echo "No URI found in line."
endif
endfunction
nnoremap <leader>w :call HandleURL()<CR>¬
आपको इस विम प्लगइन पर एक त्वरित नज़र डालनी चाहिए
यह मूल रूप से कुछ अन्य प्रतिक्रियाओं में समझाया गया है, लेकिन यदि आप एक प्लगइन प्रबंधक का उपयोग करते हैं तो विशिष्ट कॉन्फ़िगरेशन की आवश्यकता है :)
जैसा कि @kev द्वारा ऊपर वर्णित है , लिनक्स वातावरण के लिए संशोधित।
एक तरफ: जब मेरे टर्मिनल में इस फ़ंक्शन (Vim 8.1) को निष्पादित किया गया था, तो Vim स्क्रीन को बाधित किया गया था (ज्यादातर "खाली"; यानी, पाठ वहां था लेकिन दिखाई नहीं दिया)। :redraw!आदेश (देखें https://stackoverflow.com/a/1117742/1904943 ) स्क्रीन redraws।
इसमें जोड़ें ~/.vimrc:
nmap <leader>g :call Google()<CR>:redraw!<CR>
fun! Google()
let keyword = expand("<cword>")
let url = "http://www.google.com/search?q=" . keyword
let path = "/usr/bin/"
exec 'silent !"' . path . 'firefox" ' . url
endfun
netrwयह उन लोगों के लिए एक समाधान है जो हटाए गए netrw( :help netrw-noload) vim / neovim में हैं। उदाहरण के लिए, वे एक अलग फ़ाइल प्रबंधक का उपयोग करते हैंvim-dirvish
👉 :!open <c-r><c-a>
या नक्शा gx:
👉 nmap gx :!open <c-r><c-a>
मैं इस समस्या के समाधान के लिए भी खोज कर रहा था क्योंकि मैंने वास्तव में netrw को पूरी तरह से विम में लोड होने से हटा दिया और इसे बदल दिया vim-dirvish। इस प्लग के आसपास है 500 ~ एलओसी की तुलना में, netrwके (11,000+ एलओसी) ।
मैं रिमोट एडिटिंग का उपयोग नहीं करता हूं इसलिए vim-dirvishयह मेरे वर्कफ़्लो को प्रबंधित करने के लिए पर्याप्त शक्तिशाली है (यह वास्तव में netrw~ से अधिक का दावा है लेखक 2x, मुझे लगता है कि यह उससे तेज है - यह वास्तव में तात्कालिक ⚡ है) बड़े कोडबेस / रिपॉजिटरी पर बहुत उपयोगी है। मैं भी एक 10k फ़ाइल रेपो में यह कोशिश की, -अभी भी त्वरित के माध्यम से फ़ाइलों की सूची ! किसी के vim-dirvishखिलाफ परीक्षण किया गयाNerdtree , आप अंतर देख सकते हैं।
मैं गिरा vim-vinegarभी vim-dirvish है क्योंकि -बाध्यकारी वैसे भी, और के विन्यास के सबसे vim-vinegarहै netrwबारीकियों। यह सिर्फ इसकी जरूरत नहीं है एक पत्थर में दो पक्षी!
इस प्लगइन की सुंदरता यह VINE (विम नहीं Emacs है) के दर्शन को गले लगाती है। जहां यह फ़ाइल में हेरफेर करने के लिए टर्मिनल में अन्य कार्यक्रमों की शक्ति का लाभ उठाता है, बजाय इसके कि सब कुछ स्वयं करने की कोशिश कर रहा है। महत्वपूर्ण हिस्सा यह है कि ये बाहरी कार्यक्रम विम के साथ कैसे बातचीत करते हैं। और इससे हासिल होता है :Shdo, और इसमें एक सुविधाजनक कुंजी है .(डॉट कमांड , जो रिपीट कमांड के लिए महामारी है), यह चयन या vim-dirvishबफर पर वास्तविक लाइन दोनों पर करें । और !rmहटाने के लिए टाइप करें , !mvनाम बदलने के लिए।
चूंकि मैंने netrw को अक्षम कर दिया है, ( :help netrw-noload) मैंने खुद gxको समय-समय पर पहुंचने के लिए पाया । मैं gxकार्यक्षमता वापस पाने के लिए एक प्लगइन लोड नहीं करना चाहता था ।
अब समाधान के लिए, वहाँ एक आदेश मोड में बाध्यकारी है, ctrl-rतो ctrl-a( :help c_CTRL-R_CTRL-A,) चिपकाने के लिए जो कुछ भी आप कमांड लाइन के लिए अपने कर्सर में है, इसलिए यदि आपको लगता है कि के साथ गठबंधन :!xdg-open/ :!open(मैक के लिए), तो आपको काफी सेट।
वहाँ एक कारण क्यों :wसामान्य बाइंडिंग नहीं है। मैं हैरान हूँ सबसे समाधान नहीं लाभ उठाने आदेश कार्यप्रवाह, मैं पूर्व आदेश का उपयोग करता है एक बहुत, :s, :g, :v, :argdo, :cdo, और दोस्तों। इसे अलग-अलग मोड्स के साथ जोड़कर, विम की पूरी शक्ति को टैप करता है। तो बस एक मोड में न रहें, विम की पूरी शक्ति का लाभ उठाने की कोशिश करें।
👉 :!open <c-r><c-a>
ध्यान दें, !जो विम के बाहर बाहरी कार्यक्रमों की शक्ति का संकेत देता है। VINE !
यदि आप gxकार्यक्षमता वापस चाहते हैं , तो आप उसी कमांड का उपयोग करके मैप कर सकते हैं:
nmap gx :!open <c-r><c-a>मुझे अपने बाइंडिंग को चुप करना पसंद है, इसलिए जोड़ना <silent>और :silचाल करना होगा ( :help :map-silent)
👉 nmap <silent>gx :sil !open <c-r><c-a><cr>
:!open:!xdg-open:!wslviewमैं सभी तीन प्लेटफार्मों का उपयोग करता हूं और वे शानदार काम करते हैं। आप बस अपने विम बाइंडिंग के लिए उनमें से एक का उपयोग कर सकते हैं, जैसे। :!openऔर अपने में सिर्फ उर्फ करने के लिए आदेश है जो कुछ भी प्लेटफ़ॉर्म-विशिष्ट कार्यक्रम आप की है।bashrc/zshrc/fish configopen
जैसे। alias open = wslview
इस तरह, मेरा vimrcमंच-अज्ञेयवादी बना हुआ है, और मैं सिर्फ विसंगतियों से निपटूंगा bashrc/zshrc/fish config।