VIM: Funktion, die prüft, ob ein externes Programm ausgeführt wird

VIM: Funktion, die prüft, ob ein externes Programm ausgeführt wird

Mithilfe einer Vim-Funktion möchte ich mit pgrep prüfen, ob ein Programm läuft, und wenn es nicht läuft, etwas unternehmen. Insbesondere möchte ich so etwas erreichen:

function! checkifrunning(mystring)
    if 'pgrep "mystring"' shows that something is NOT running
        --do something--
    endif
endfunction

Ich vermute, dass ich die Funktion „system()“ verwenden muss, bin mir aber nicht sicher, wie. Kann mir jemand helfen?

EDIT: Ich hätte gerne eine Lösung, die insbesondere pgrep verwendet und nicht auf andere Weise

Antwort1

function! checkifrunning(mystring)
    if !system('pgrep "' . a:mystring . '"')
        " --do something--
    endif
endfunction

Technisch!arbeitet aufZahlen, und konvertiert einen String zuerst in eine Zahl, wenn ein String angegeben ist. Wenn jedoch kein Prozess ausgeführt wird, pgrepist die Ausgabe leer, was bei der Konvertierung in eine Zahl 0 ergibt. Wenn Prozesse ausgeführt werden, ergibt die Konvertierung in eine Zahl einen Wert ungleich Null.

Statt 'pgrep "' . a:mystring . '"'können Sie auch Folgendes tun 'pgrep ' . shellescape(a:mystring).

Antwort2

Sie können wie folgt verwenden:

:call system("pgrep process name ")

Um die Ausgabe auszudrucken,

:echo system("pgrep process name ")

Sie können die Ausgabe in einer Variablen wie speichern

:let a=system("pgrep process name ")

Und verwenden Sie diese Variable in jeder Schleife, jedem Druckvorgang oder auch in Zeichenfolgenfunktionen.

verwandte Informationen