2009-10-12 21 views
9

Das klingt vielleicht albern, aber ich habe es nicht in der Hilfe gefunden.VIM Anzahl/Anzahl der Fehler in Quickfix

Wie die Anzahl der Fehler in der QuickFix nach der Ausführung :make zu ermitteln?

Oder zumindest sehen, ob es irgendwelche Fehler gibt, d. H. Fehler> 0?

Antwort

13

Sie können programmatisch die Liste der Fehler mit getqflist() erhalten:

getqflist()      *getqflist()* 
     Returns a list with all the current quickfix errors. Each 
     list item is a dictionary with these entries: 
      bufnr number of buffer that has the file name, use 
       bufname() to get the name 
      lnum line number in the buffer (first line is 1) 
      col column number (first column is 1) 
      vcol non-zero: "col" is visual column 
       zero: "col" is byte index 
      nr error number 
      pattern search pattern used to locate the error 
      text description of the error 
      type type of the error, 'E', '1', etc. 
      valid non-zero: recognized error message 

     When there is no error list or it's empty an empty list is 
     returned. Quickfix list entries with non-existing buffer 
     number are returned with "bufnr" set to zero. 

     Useful application: Find pattern matches in multiple files and 
     do something with them: > 
      :vimgrep /theword/jg *.c 
      :for d in getqflist() 
      : echo bufname(d.bufnr) ':' d.lnum '=' d.text 
      :endfor 

Wenn Sie nur die Gesamtzahl wünschen, len(getqflist()) verwenden. zB:

:echo len(getqflist()) 

Wenn Sie nur interaktiv wissen wollen, :cw wird die Liste in einem Fenster öffnen, wenn es irgendwelche Fehler gibt (und es zu schließen, wenn es bereits geöffnet ist und keine Fehler vorhanden sind). Die Anzahl der Zeilen in diesem Puffer ist die Anzahl der Fehler.

+3

Wenn der quickfix Fenstertext nicht erkannt als Fehler enthält, wird die Liste wieder von 'getqflist()' Einträge für jedes von ihnen enthalten Linien. Du könntest also immer noch null Fehler mit 'len (getqflist())' haben, die nicht Null sind. Sie müssen das "gültig" -Flag innerhalb der resultierenden Liste überprüfen. Verwenden Sie dazu die Funktion 'filter()'. – Ben

+2

'len (filter (getqflist(), 'v: val.valid')) gibt Ihnen die Anzahl der gültigen Quickfix-Einträge. In vielen Fällen ist es gleich der Anzahl der Einträge, aber nicht immer. Nachschlagen ': help filter()' wäre ein guter Anfang gewesen, um das herauszufinden. ;-) – Ben

+0

Danke für die Antwort. Ich habe nur ein paar Tutorials redigiert und schreibe eine reguläre Version, ohne 'filter()' zu benutzen, siehe [my gist] (https://gist.github.com/ih4cku/fa5d57f9f1dc5c03b6c36155bf3e2904) falls du interessant bist. Offensichtlich ist die Verwendung von 'filter()' eleganter. @Ben – nn0p

1

Sie können nur die getqflist() Funktion verwenden (siehe :help getqflist()):

:echo printf("Have %d errors", len(getqflist())) 
Verwandte Themen