Як використовувати змінну у виразі команди "normal"?


13

Як можна використовувати змінну при виконанні чогось через normal!vimscript?

Приклад:

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

Це має перемістити someArgкроки курсору праворуч.


4
вам потрібно скористатисяexe "norm!" variable
Крістіан Брабандт

Відповіді:


21

executeФункція приймає рядок в якості аргументу, він розширює рядок і виконати її аа регулярну команду екс. Таким чином ви можете зробити:

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

.Є стандартним vimscript оператором для конкатенації рядків.

executeможна скоротити до exe.

Побачити :h :execute


EDIT Я додам крапку щодо коментаря @Christian Brabandt про конкатенацію з a ..

Доктор каже:

Кілька аргументів об'єднані, між ними пробіл. Щоб уникнути зайвого місця, використовуйте "." оператор для об'єднання рядків в один аргумент.

Отже командою могло бути:

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

Виконана команда буде:

normal! 2l

8
вам не потрібно '.'. exe об'єднає рядки з пробілом без нього.
Крістіан Брабандт

1
@ChristianBrabandt Чекати серйозно? Я не знаю, що.
Тумблер41

@ChristianBrabandt Я не знав, що дякую!
statox
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.