Jak używać zmiennej w wyrażeniu „normalnego” polecenia?


13

Jak można użyć zmiennej podczas wykonywania czegoś normal!w vimscript?

Przykład:

function! MyFunction(someArg)
   normal! (a:someArg)l
endfunction

To powinno przesunąć someArgkroki kursora w prawo.


4
musisz użyćexe "norm!" variable
Christian Brabandt

Odpowiedzi:


21

executeFunkcja przyjmuje ciąg jako argument, rozszerza łańcuch i wykonać polecenie aa regularne ex. W ten sposób możesz:

function! MyFunction(someArg) 
    execute "normal! ". a:someArg. "l" 
endfunction

.To standardowy operator vimscript do łączenia ciągów.

executemożna skrócić do exe.

Widzieć :h :execute


EDIT Dodam punkt na temat komentarza @Christian Brabandt o konkatenacji z ..

Doktor mówi:

Wiele argumentów jest łączonych ze spacją między nimi. Aby uniknąć dodatkowego miejsca, użyj „.” operator do łączenia łańcuchów w jeden argument.

Tak więc polecenie może wyglądać następująco:

execute "normal!" a:someArg . "l"

Wykonane polecenie będzie:

normal! 2l

8
nie potrzebujesz „.”. exe połączy łańcuchy ze spacją bez niego.
Christian Brabandt,

1
@ChristianBrabandt Czekać poważnie? Nie wiedziałem tego.
Tumbler41,

@ChristianBrabandt Nie wiedziałem, że dzięki!
statox
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.