Ich benutze Twitvim zum ersten Mal. Als ich alle URLs dort sah, fragte ich mich, ob es eine Möglichkeit gibt, die URL unter dem Cursor in Ihrem bevorzugten Browser oder einem bestimmten zu öffnen.
Ich benutze Twitvim zum ersten Mal. Als ich alle URLs dort sah, fragte ich mich, ob es eine Möglichkeit gibt, die URL unter dem Cursor in Ihrem bevorzugten Browser oder einem bestimmten zu öffnen.
Antworten:
Aktualisiert: von tpopes Tweet heute
Drücken Sie gx. Sie können den Browser anpassen. Auf Gnome und Mac OS X es bereits verwenden gnome-open/ open. Im Allgemeinen können Sie g:netrw_browsex_vieweralles einstellen , was Sie wollen.
Ursprüngliche Antwort:
Ich erinnere mich nicht, woher ich diese Funktion habe. Es gibt einen Fehler mit Hash (#) in der URL, aber die Funktion funktioniert gut genug, dass ich mich nicht darum kümmere, ihn zu beheben.
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>
Hinweis: Wenn Sie nicht auf dem Mac arbeiten, verwenden Sie gnome-open/ xdg-openfür Linux oder "Pfad zu Ihrem Webbrowser" für Windows
gxist so mächtig, danke! Es werden auch Dateien mit geeigneten Anwendungen ™ geöffnet.
Wenn Sie Vim 7.4 oder höher verwenden, setzen Sie den Cursor im normalen Modus unter die URL und klicken Sie auf gx. Die URL wird automatisch im Browser geöffnet
:h netrw_gx: * Für Windows 32 oder 64 werden die URLs url und FileProtocolHandler verwendet. * für Gnome (mit Gnome-Open): Gnome-Open wird verwendet. * für KDE (mit kfmclient): kfmclient wird verwendet * für Mac OS X: open wird verwendet. * Andernfalls wird das Plugin netrwFileHandler verwendet.
Ich benutze dieses Skript, um keywordunter dem Cursor nach Google zu suchen :
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
Sie sollten getline('.')und verwenden matchstr(), um URL unter Cursor zu extrahieren. Der Rest ist der gleiche.
Fügen Sie der .vimrc-Datei die folgende Zeile hinzu:
nmap <leader><space> yiW:!xdg-open <c-r>" &<cr>
Im normalen Modus wird durch Drücken von \ das aktuelle Wort ausgewählt und als Adresse im Webbrowser geöffnet.
Leader ist standardmäßig \ (aber ich habe es mit zugeordnet let mapleader = ","). In ähnlicher Weise können Sie mit imap eine Tastenfolge im Einfügemodus zuordnen (wenn es sich jedoch um eine 2-Tastenfolge handelt, wird wahrscheinlich ein Standardverhalten außer Kraft gesetzt).
Ok, also mit den Antworten von @tungd und @kev und ein wenig Recherche bin ich zu diesem Skript gekommen, das genau so funktioniert, wie ich es brauche. Wie @tungd sagte, kann das # ein Problem geben, wenn es sich in einer URL befindet, aber ich finde das cool. Wenn jemand einen besseren Ausdruck für die URL hat, wird es begrüßt.
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>
Ich bin ziemlich spät zu dieser Party, aber hier ist eine andere Möglichkeit, die unter Windows 7 besonders gut funktioniert.
Installieren Sie sowohl vim-shell als auch vim-misc in vim. Ich empfehle, dies über das fantastische Pathogen- Plugin und dann einfach cd ~/vimfiles/bundle & git clone git@github.com:xolox/vim-misc.git & git clone git@github.com:xolox/vim-shell.gitüber msysgit zu tun. ( Diese beiden Plugins öffnen URLs in Ihrem Standardbrowser, ohne zusätzliche Eingabeaufforderungen oder anderen albernen Unsinn zu erstellen, der normalerweise in Windows erforderlich ist. Sie können URLs in Vim folgendermaßen öffnen : :Open http://duckduckgo.com. Probieren Sie es aus. Es wird Ihnen gefallen. )
Erstellen Sie einige Vim-Zuordnungen, damit Sie die Zeile unter dem Cursor schnell in den Browser übertragen können. Ich würde dir das zuordnen (für mich ist das ,uaus dem normalen Modus). Hier ist wie:
nnoremap u: exec "Open" .getline (".")
Um diese Zuordnung zu verwenden, geben Sie Ihre Leader-Taste im normalen Modus + u ein. Es sollte die Zeile unter Ihrem Cursor lesen und in Ihrem Standardbrowser öffnen.
Dies ist eine Art verbesserte Version des Skripts, das ursprünglich von @tungd hier https://stackoverflow.com/a/9459366/7631731 vorgeschlagen wurde . Behält den vim-Kontext bei und behandelt URLs mit "#" korrekt.
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>¬
Sie sollten einen kurzen Blick auf dieses Vim-Plugin werfen
Es ist im Grunde das, was in einigen anderen Antworten erklärt wurde, aber eine spezielle Konfiguration ist erforderlich, wenn Sie einen Plugin-Manager verwenden :)
Wie oben von @kev beschrieben , modifiziert für Linux-Umgebungen.
Nebenbei: Als diese Funktion in meinem Terminal ausgeführt wurde (Vim 8.1), war der Vim-Bildschirm verschleiert (meistens "ausgeblendet"; dh der Text war vorhanden, aber nicht sichtbar). Der :redraw!Befehl (siehe https://stackoverflow.com/a/1117742/1904943 ) zeichnet den Bildschirm neu.
Hinzufügen zu ~/.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
netrwDies ist eine Lösung für Personen, die netrw( :help netrw-noload) in vim / neovim entfernt haben. Zum Beispiel verwenden sie einen anderen Dateimanager wievim-dirvish
👉 :!open <c-r><c-a>
oder Karte gx:
👉 nmap gx :!open <c-r><c-a>
Ich habe auch nach einer Lösung für dieses Problem gesucht, da ich netrw tatsächlich aus dem vollständigen Laden in vim entfernt und durch ersetzt habe vim-dirvish. Dieses Plugin hat ungefähr 500 ~ LOC im Vergleich zu netrw's (11.000+ LOC) .
Ich verwende die Fernbearbeitung nicht viel und bin daher vim-dirvishleistungsstark genug, um meinen Workflow zu verwalten (es ist tatsächlich schneller als netrw~ der Autor behauptet 2x, ich denke , es ist schneller als das - es ist wirklich augenblicklich ⚡), sehr nützlich bei großen Codebasen / Repositorys. Ich habe es sogar in einem 10K-Datei-Repo versucht und Dateien über -noch sofort aufgelistet! Jemand getestet vim-dirvishgegenNerdtree , können Sie den Unterschied sehen.
Ich fiel vim-vinegarauch , weil vim-dirvish haben die -ohnehin verbindlich, und die meisten der Konfiguration vim-vinegarist netrwSpezifika. Es braucht es einfach nicht. Zwei Fliegen in einer Klappe!
Das Schöne an diesem Plugin ist, dass es die Philosophie von VINE umfasst (Vim ist nicht Emacs). Wo es die Leistung anderer Programme im Terminal nutzt, um Dateimanipulationen durchzuführen, anstatt zu versuchen, alles selbst zu tun. Der wichtige Teil ist, wie natürlich diese externen Programme mit vim interagieren. Und das wird erreicht durch :Shdo, und es hat eine bequeme Taste von .(Punktbefehl , der für den Wiederholungsbefehl mnemonisch ist), dies sowohl für die Auswahl als auch für die tatsächliche Zeile in einem vim-dirvishPuffer zu tun . Und geben Sie !rmzum Entfernen und !mvUmbenennen ein.
Da ich netrw deaktiviere, ( :help netrw-noload) griff ich gxvon Zeit zu Zeit. Ich wollte kein Plugin laden, um die gxFunktionalität wieder herzustellen .
Jetzt für die Lösung, es gibt eine im Befehlsmodus zu binden, ctrl-rdann ctrl-a( :help c_CTRL-R_CTRL-A) einfügen , was Sie in Ihren Cursor an die Befehlszeilen haben, wenn Sie also , dass mit kombinieren :!xdg-open/ :!open(für Mac), Sie ziemlich viel Set.
Es gibt einen Grund, warum :wes keine normalen Bindungen gibt. Ich bin die meisten Lösung überrascht nicht Hebel Befehl Workflow, ich viel ex-Befehl zu verwenden, :s, :g, :v, :argdo, :cdo, und Freunde. Wenn Sie dies mit verschiedenen Modi kombinieren, können Sie die volle Leistung von vim nutzen. Bleiben Sie also nicht nur in einem Modus, sondern versuchen Sie, die volle Leistung von vim zu nutzen.
👉 :!open <c-r><c-a>
Beachten Sie, !was darauf hinweist, dass die Leistung externer Programme außerhalb von vim genutzt wird. WEIN !
Wenn Sie die gxFunktionalität wiederherstellen möchten , können Sie sie einfach mit demselben Befehl zuordnen:
nmap gx :!open <c-r><c-a>Ich mag meine Bindungen zu schweigen, so dass das Hinzufügen <silent>und :silden Trick ( :help :map-silent)
👉 nmap <silent>gx :sil !open <c-r><c-a><cr>
:!open:!xdg-open:!wslviewIch benutze alle drei Plattformen und sie funktionieren großartig. Sie können einfach eine davon für Ihre Vim-Bindungen verwenden, z. :!openund nur Alias in Ihrem bashrc/zshrc/fish configden openBefehl zu , was plattformspezifischen Programm , das Sie haben.
z.B. alias open = wslview
Auf diese Weise vimrcbleibt meine Plattform plattformunabhängig und ich werde mich nur über mit den Inkonsistenzen befassen bashrc/zshrc/fish config.