Bedingte Operatoren AND oder OR in einer IF-Anweisung verwenden?


30

Dies ist wahrscheinlich eine unglaublich einfache Frage, aber ich habe bisher keine Antwort gefunden (mir müssen die richtigen Quellen fehlen, und ich weiß nicht, wo ich in vims Hilfe suchen soll).

Ich habe eine Bedingung und möchte, dass sie UND enthält

if (condition1 .AND. condition2)
   "do what I want you to do
endif

aber ich konnte die Syntax nicht finden. Gleiches gilt für "ODER".


8
Heh, .AND.und .OR.ist Fortran-Syntax, ich habe lange nicht mehr gesehen, dass außerhalb von Fortran-Code verwendet. :) Vim verwendet stattdessen eine C-ähnliche Syntax &&für AND und ||OR. Sehen Sie :h expression-syntaxfür mehr.
lcd047

1
Ich habe Mitgefühl in Ihrem Kommentar verspürt, mit * Ich habe lange nicht mehr gesehen, dass außerhalb von Fortran Code verwendet wurde. :) *: Danke für das. Wenn Sie einen Kommentar als Antwort posten, nehme ich ihn gerne an!
Feffe

2
Ich finde es verwirrend, wie der Fragentitel "und" und oder und "oder" so nebeneinander setzt. (jk)
Ben Millwood

2
Ich hätte "und" und / oder "oder" schreiben können. Aber ich habe es nicht gewagt!
Feffe

Antworten:


30

Wie @ lcd047 in seinem Kommentar sagte, verwenden Vimscript C-ähnliche Operatoren &&und ||.

Eine Beschreibung ihrer Verwendung finden Sie auf :h expr2. Einige wichtige Punkte, die im Dokument erwähnt werden, sind die folgenden

Sie werden feststellen, dass die Operatoren verkettet werden können und &&Vorrang ||haben

&nu || &list && &shell == "csh"

Ist äquivalent zu

&nu || (&list && &shell == "csh")

Auch sobald das Ergebnis bekannt ist, wird der Ausdruck "Kurzschlüsse", dh weitere Argumente, nicht ausgewertet. Das ist wie in C.

Wenn du benutzt:

if a || b

Der Ausdruck ist gültig, auch wenn er bnicht definiert ist.


2
Beachten Sie, dass ich diese Antwort gemacht habe, weil @ lcd047 keine geschrieben hat und ich dachte, die Notiz über das Dokument wäre interessant, aber wenn lcd047 eine Antwort liefert, würde ich diese gerne löschen, damit er die Gutschrift fair erhält
statox

1
Ich bezweifle das. Vor einiger Zeit sagte mir lcd047, dass sie keine Antworten veröffentlichen werden.
Muru

@muru: Ich erinnerte mich auch, dass ich das irgendwo gesehen hatte, aber ich war mir nicht 100% sicher, ob er es war und nicht ein anderer Benutzer.
statox
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.