Gibt es eine Möglichkeit, eine Option auf den Wert einer anderen Option festzulegen?

7

Zum Beispiel möchte ich einstellen

set tabstop=4
set shiftwidth=4

Gibt es eine Möglichkeit, so etwas zu tun?

set tabstop=4
set shiftwidth=tabstop

kann ich also beide Werte einstellen, indem ich nur eine einzige Zahl ändere?

Chad Paradis
quelle

Antworten:

13

Sie können letstattdessen den Befehl verwenden.

Wie so:

let &shiftwidth = &tabstop

Das &gibt an, dass der Variablenname eine Vim-Option ist. Sie können auch :help let-optionmehr darüber wissen:

:let &{option-name} = {expr1}
        Set option {option-name} to the result of the
        expression {expr1}.  A String or Number value is
        always converted to the type of the option.
        For an option local to a window or buffer the effect
        is just like using the |:set| command: both the local
        value and the global value are changed.
Akshay
quelle
2
Beachten Sie, dass Sie wahrscheinlich &l:shiftwidthnur die lokale Puffervariable ändern möchten .
Jamessan
Ich werde dies als akzeptiert markieren, da es meine Frage technisch beantwortet. Ich muss beide Werte immer noch separat festlegen, wenn ich Tabstop- / Shiftwidth-Werte in einer laufenden Instanz von vim ändern möchte.
Chad Paradis
2

Könnte ein besserer Weg sein, aber Sie könnten dies immer tun:

exec 'set shiftwidth=' . &tabstop

Steve Vermeulen
quelle