Archiv
Archiv IndexBlog-Status
Anzahl Kategorien: 19Anzahl Einträge: 139
Letzter Eintrag: 10.05.2022 23:21:12
Zuletzt geändert: 28.09.2023 22:09:46
RSS, Atom
Powered by
NanoBlogger 3.4.2
Mein erstes vim-Skript... :)
Es ist nun tatsächlich soweit. Ich habe mein erstes vim-Skript erstellt (bzw. eine Funktion). Da ich dieses Blog per vim bearbeite, und ich immer mal wieder Links eintrage, hat es mich geärgert, dass ich die Zeile für den Link immer wieder von Hand eintragen muss. D.h. jedes Mal URL kopieren, Source der Seite öffnen, Titel der Seite kopieren. Target anfügen. Sehr nervig. Ab jetzt kann ich das ganze durch einen geführten Vorgang machen. vim-Funktion aufrufen. URL eingeben, target eingeben und, voila, meine Zeile mit dem Title automatisch aus der Seite extrahiert liegt vor. Wie z.B. hier
Tip #1178 - Simple function to add a full link-tag with automatic title : vim online
Eine extreme Vereinfachung. :-) Und ausserdem habe ich jetzt das erste Mal in das Thema vim-Skripting reingeschnüffelt. Für andere User, die dieses Feature brauchen könnten (z.B. andere nanoblogger-User), hier nochmal das Skript zum selber nutzen:
" This small function simplifies the addition of links to an html-Page. The
" title of the linked page automagically is requested and added to the output
" The line is added after the current line.
"
" Author: Gerhard Siegesmund <jerri@jerri.de>
map <leader>al :call AddLinkToText()<CR>
function! AddLinkToText()
let url = input("URL to add? ", "")
if strlen(url) == 0
return
endif
" Save b register
let saveB = @b
" Get the target
let target = input("Target for this link? ", "_blank")
if strlen(target) > ""
let target = " target=\"" . target . "\""
endif
" Get the source of the page
let code = system("lynx -dump -source " . url)
" Find the title of the page
let title = substitute(code, '.*head.*<title[^>]*>\(.*\)<\/title>.*head.*', '\1', '')
if title == code
" If nothing changed we couldn't find the regular expression
let title = "Unknown"
endif
" Remove newline-characters (not yet tested!)
let title = substitute(title, "\n", " ", "g")
" Output the code
let @b = "<a href=\"" . url . "\"" . target . ">" . title . "</a>"
put b
" Restore b register
let @b = saveB
endfunction