Twitvim'i ilk kez kullanıyorum. Buradaki tüm URL'leri görmek beni meraklandırdı, imlecin altındaki URL'yi favori tarayıcınızda veya belirli bir tarayıcıda açmanın bir yolu var mı?
Twitvim'i ilk kez kullanıyorum. Buradaki tüm URL'leri görmek beni meraklandırdı, imlecin altındaki URL'yi favori tarayıcınızda veya belirli bir tarayıcıda açmanın bir yolu var mı?
Yanıtlar:
Güncellenmiş: tpope'un tweet'inden bugün
Tuşuna basın gx. Tarayıcıyı özelleştirebilirsiniz. Gnome ve Mac OS X'te zaten gnome-open/ kullanıyor open. Genelde istediğiniz g:netrw_browsex_viewerherhangi bir şeye ayarlayabilirsiniz .
Orijinal cevap:
Bu işlevi nereden aldığımı hatırlamıyorum. URL'de hash (#) ile ilgili bir hata var, ancak işlev yeterince iyi çalışıyor ve ben onu düzeltmekle uğraşmayacağım.
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>
Not: Mac'te değilseniz, Linux için gnome-open/ xdg-openveya Windows için 'web tarayıcınızın yolunu' kullanın
gxçok güçlü, teşekkürler! Ayrıca dosyaları uygun uygulamalarla açar ™.
Vim 7.4 veya sonraki bir sürümünü kullanıyorsanız, normal modda, imlecinizi URL'nin altına getirin, ardından tıklayın gx, URL tarayıcıda otomatik olarak açılacaktır.
:h netrw_gx: * Windows 32 veya 64 için url ve FileProtocolHandler dll'leri kullanılır. * Gnome için (gnome-open ile): gnome-open kullanılır. * KDE için (kfmclient ile): kfmclient kullanılır * Mac OS X için: open kullanılır. * aksi takdirde netrwFileHandler eklentisi kullanılır.
Bu komut dosyasını, gooogle’da keywordimleç altında aramak için kullanıyorum :
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
İmlecin altındaki url'yi çıkarmak için getline('.')ve kullanmalısınız matchstr(). Gerisi aynı.
.Vimrc dosyasına aşağıdaki satırı ekleyin:
nmap <leader><space> yiW:!xdg-open <c-r>" &<cr>
Yani normal modda \ tuşuna basmak o anki kelimeyi seçer ve web tarayıcısında adres olarak açar.
Lider varsayılan olarak \ (ancak onu ile eşledim let mapleader = ","). Benzer şekilde, imap kullanarak ekleme kipinde bazı tuş dizilerini eşleyebilirsiniz (ancak daha sonra, eğer bu 2 tuş dizisi ise, muhtemelen bazı varsayılan davranışları geçersiz kılacaktır).
Bu, başlangıçta @tungd tarafından https://stackoverflow.com/a/9459366/7631731 tarafından önerilen betiğin geliştirilmiş bir sürümüdür . Vim bağlamını korur ve "#" içeren URL'leri doğru şekilde işler.
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>¬
Tamam, @tungd ve @kev'den gelen cevapları ve küçük bir araştırmayı kullanarak bu senaryoyu tamamladım, tam da ihtiyacım olan şekilde çalışıyor. @Tungd'un dediği gibi # bir url'nin içindeyken sorun yaratabilir ama bunda sorun yok, eğer herhangi biri url için daha iyi bir ifadeye sahipse o zaman memnuniyetle karşılanacaktır.
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>
Bu partiye oldukça geç kaldım, ama işte bunu yapmanın özellikle Windows 7'de işe yarayan başka bir yolu.
Her iki yükleme vim-kabuk ve vim-misc vim şimdiye-korku yoluyla bunu tavsiye Patojen sadece o eklenti ve cd ~/vimfiles/bundle & git clone git@github.com:xolox/vim-misc.git & git clone git@github.com:xolox/vim-shell.gitmsysgit dan. ( Bu iki eklenti, ekstra komut istemleri veya genellikle pencerelerde gerekli olan diğer saçma saçmalıklar oluşturmadan varsayılan tarayıcınızda url'leri açar. URL'leri Vim'de şu şekilde açabilirsiniz:. :Open http://duckduckgo.comDeneyin. Beğeneceksiniz . )
İmlecin altındaki satırı hızlı bir şekilde tarayıcıya alabilmeniz için bazı vim eşlemeleri oluşturun . Bunu u'ya eşlerim (benim için bu ,unormal moddan). Bunu nasıl yapacağınız aşağıda açıklanmıştır:
nnoremap u: exec "Aç" .getline (".")
Bu eşlemeyi kullanmak için, Lider anahtarınızı normal moddan + u yazın. İmlecinizin altındaki satırı okumalı ve varsayılan tarayıcınızda açmalıdır.
Bu vim eklentisine hızlıca bakmalısınız
Temelde diğer bazı yanıtlarda açıklanan şeydir, ancak bir eklenti yöneticisi kullanıyorsanız özel yapılandırma gerekir :)
Yukarıda @kev tarafından açıklandığı gibi , Linux ortamları için değiştirilmiştir.
Bir kenara: bu işlev terminalimde çalıştırıldığında (Vim 8.1), Vim ekranı karartılmıştı (çoğunlukla "karartılmış;" yani metin oradaydı ancak görünmüyordu). :redraw!Komutu (bkz https://stackoverflow.com/a/1117742/1904943 ) ekranını yeniden çizer.
Ekle ~/.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
netrwBu, vim / neovim'de netrw( :help netrw-noload) öğesini kaldıran kişiler için bir çözümdür . Örneğin, farklı bir dosya yöneticisi kullanıyorlar.vim-dirvish
👉 :!open <c-r><c-a>
veya harita gx:
👉 nmap gx :!open <c-r><c-a>
Bu soruna da bir çözüm arıyordum çünkü netrw'yi vim'e tamamen yüklenmekten çıkardım ve yerine koydum vim-dirvish. Bu eklenti çevresinde yer alır , 500 ~ LOC göre, netrwbireyin (11,000+ KO) .
Uzaktan düzenlemeyi çok fazla kullanmıyorum vim-dirvish, bu yüzden iş akışımı yönetmek için yeterince güçlü (Aslında netrw~ yazar 2 kattan daha hızlı, bundan daha hızlı olduğunu hissediyorum - gerçekten anlık ⚡) büyük kod tabanları / havuzlar için çok yararlı. Hatta onu bir 10K dosya deposunda denedim, dosyaları -hala anında listeliyorum ! Birisine vim-dirvishkarşı testNerdtree edildiğinde farkı görebilirsiniz.
Ben düştü vim-vinegarvim-dirvish çünkü çok -zaten bağlayıcı ve yapılandırması çoğu vim-vinegarise netrwayrıntıları. Sadece buna ihtiyacı yok. Bir taşta iki kuş!
Bu eklentinin güzelliği, VINE felsefesini benimsemesidir (Vim, Emacs değildir). Her şeyi kendi başına yapmaya çalışmak yerine dosya manipülasyonları yapmak için terminaldeki diğer programların gücünden yararlandığı yerde. Önemli olan, bu harici programların vim ile ne kadar doğal etkileşimde olduğudur. Ve bu, ( tekrarlama komutu için anımsatıcı olan nokta komutu):Shdo uygun bir anahtarına sahiptir , bunu hem seçimde hem de arabellekteki gerçek satırda yapın . Yeniden adlandırmak için kaldırmak için yazın ..vim-dirvish!rm!mv
Netrw'yi devre dışı bıraktığım için, ( :help netrw-noload) kendimi gxzaman zaman ulaşırken buldum . gxİşlevselliği geri almak için bir eklenti yüklemek istemedim .
Şimdi çözüm için, komut modunda bir bağlama var, ctrl-rsonra imlecinizdeki her şeyi komut satırına yapıştırmak için ctrl-a( :help c_CTRL-R_CTRL-A), yani bunu :!xdg-open/ :!open(mac için) ile birleştirirseniz , hemen hemen ayarlamış olursunuz.
:wNormal bağlamaların olmamasının bir nedeni var. Ben şaşırdım çoğu değil kaldıraç komut iş akışı, Ben eski komutunu kullanın does çözüm bir çok :s, :g, :v, :argdo, :cdo, ve arkadaşları. Bunu farklı modlarla birleştirmek, vim'in tüm gücüne dokunur. Öyleyse sadece tek bir modda kalmayın, vim'in tüm gücünden yararlanmaya çalışın.
👉 :!open <c-r><c-a>
Uyarı !dışında vim dış programların gücünden yararlanarak gösterir ki. VINE !
İsterseniz gxişlevselliği geri, sadece aynı komutunu kullanarak bağlanabilirler:
nmap gx :!open <c-r><c-a>Bağlamalarımı susturmayı seviyorum, bu yüzden eklemek <silent>ve :silhile yapacak ( :help :map-silent)
👉 nmap <silent>gx :sil !open <c-r><c-a><cr>
:!open:!xdg-open:!wslviewÜç platformu da kullanıyorum ve harika çalışıyorlar. Vim bağlamalarınız için bunlardan birini kullanabilirsiniz, örn. :!openve sadece takma komuta ne olursa olsun platforma özel programı var.bashrc/zshrc/fish configopen
Örneğin. alias open = wslview
Bu şekilde, vimrcplatformdan bağımsız kalıyor ve tutarsızlıklarla başa çıkacağım bashrc/zshrc/fish config.