Die Herausforderung liegt hier mit allen Links zu extrahieren, wo es auf der Leitung mehrfach sein kann, sonst Sie wäre in der Lage, einfach tun:
" Extract all lines with href=
:g/href="[^"]\+"/w >> list_of_links.txt
" Open the new file
:e list_of_links.txt
" Extract the bit inside the quotation marks
:%s/.*href="\([^"]\+\)".*/\1/
Der einfachste Ansatz wahrscheinlich, dies zu tun wäre:
" Save as a new file name
:saveas list_of_links.txt
" Get rid of any lines without href=
:g!/href="\([^"]\+\)"/d
" Break up the lines wherever there is a 'href='
:%s/href=/\rhref=/g
" Tidy up by removing everything but the bit we want
:%s/^.*href="\([^"]\+\)".*$/\1/
Alternativ (nach einem ähnlichen Thema),
:g/href="[^"]\+"/w >> list_of_links.txt
:e list_of_links.txt
:%s/href=/\rhref=/g
:%s/^.*href="\([^"]\+\)".&$/\1/
(siehe: help saveas,: help: vglobal,: Hilfe: s)
aber wenn Sie es wirklich in einer direkteren Art und Weise tun wollen, könnten Sie so etwas tun:
" Initialise register 'h'
:let @h = ""
" For each line containing href=..., get the line, and carry out a global search
" and replace that extracts just the URLs and a double quote (as a delimiter)
:g/href="[^"]\+"/let @h .= substitute(getline('.'), '.\{-}href="\([^"]\+\)".\{-}\ze\(href=\|$\)', '\1"', 'g')
" Create a new file
:new
" Paste the contents of register h (entered in normal mode)
"hp
" Replace all double quotes with new-lines
:s/"/\r/g
" Save
:w
Schließlich könnten Sie es in einer Funktion mit einer for-Schleife tun, aber ich werde das für jemand anderen zu schreiben lassen!
Was bedeutet "wir" hier? – allenhwkim
'W' = Umbrechen Sie die Suche nicht nach dem Ende der Datei. 'e' = gehe zum Ende des Spiels. Siehe ': h search()'. –