2017-05-08 1 views
0

Ich habe ein benutzerdefiniertes, sehr komplexes Dateiformat. Dieses Format kann von einem Bash-Skript in Menschen lesbar geparst werden (was dazu führt, dass ein C++ - Programm aufgerufen wird, um es tatsächlich zu analysieren).VIM: Skript ausführen und Ergebnis für komplexen Dateityp anzeigen

Was kann ich tun, damit, wenn vim Trys diese Datei zu lesen, anstatt einfach zu öffnen sollte es zuerst dieses Skript aufrufen sollte und dann das Ergebnis angezeigt werden statt der Inhalt der Datei

+0

Ich denke, das Adressen nur so: http://StackOverflow.com/Questions/6974440/Vim-Function-To-Call-Bash-Script-with-Argument-and-return-result/6974925#6974925 – hmedia1

+0

A eher Eine langweilige Lösung besteht darin, ein Shell-Skript zu erstellen, das die Analyse durchführt und dann vim für die generierten Daten öffnet. –

+0

Dieser Link beantwortet die Fragen nicht, da mein Skript keinen Text akzeptiert, sondern einen Pfad, und zweitens möchte ich eine Lösung, wenn vim eine Datei eines bestimmten Typs aufruft, ruft sie automatisch diese Skripte auf und zeigt die Ergebnisse anstelle des ursprünglichen binärischen an Text – SFD

Antwort

1

diese in Ihre vimrc:

autocmd BufRead *.yourext call ParseMyComplexFile()  " When reading your complex files 

function ParseMyComplexFile() 
    let l:fname = expand('%:t')      " Copy current file name to l:fname 
    enew           " Open new empty buffer in place of current one 
    setlocal buftype=nofile       " (scratch buffer) New buffer is not related to a file and will not be written 
    setlocal bufhidden=hide       " (scratch buffer) Don't unload the buffer when it is hidden 
    setlocal noswapfile        " (scratch buffer) No swap file for this buffer 
    " Execute your script on the file and change the name of the buffer to 'parsed <filename>' 
    silent execute "read !yourscript.sh " . l:fname   
    silent execute "file parsed " . l:fname   
    1d            " Delete the first unwanted empty row 
    1            " Position to first row 
endfunction 

ersetzt yourext und yourscript.sh mit der richtigen Werte.

Sie haben zwei neue Puffer: einen mit der Originaldatei und einen mit der geparsten Ausgabe (dies ist der aktuelle Puffer).

Verwandte Themen