2012-03-25 2 views
1

«Я не могу выяснить, как использовать переменную из-за inputdialog в функции или цикл. Inputdialog рассматривается как строка, и я не могу использовать его в цикле или функцию.Как использовать переменную inputdialog в «for loop»?

ре:

if !exists("myvar") 
let myvar= "which variable?" 
endif 
let a = inputdialog(myvar) 

for n in range(1,3) 
put = a 
endfor 

если ре вар а = п
Я ожидаю, что это как выход:

1 
2 
3 

, но он дает это как выход:

n 
n 
n 

("а" рассматривается как строка, а не как оператор)

Что я сделал не так?
Как я могу позволить vim распознать значение inputdialog как оператора, а не как строку?

+0

Но ваш код верен, он печатает то, что он должен. Я не уверен, что вы пытаетесь сделать, отредактируйте и переформулируйте. – lzap

+0

@lzap Я переформулировал текст. Надеюсь, я поняла. – Reman

+0

Что ожидать 'put = a'? Он поместит содержимое набора var 'a' в 'inputdialog()', и если он был установлен в 'n', это то, что будет помещено в буфер. Почему вы не используете 'put = n', если хотите значения 'n'? Боюсь, я не понимаю, что вы хотите. – Raimondi

ответ

1

изменить команду

:put =a 

в

:put =eval(a) 

Также можно использовать

:exe 'put =' a 

Однако, если строка хранится в переменной a содержит символы мешающие Синтаксис команд Ex или режим командной строки s hortcuts, команда выше работает неправильно, не вызывая указанные символы.

+0

спасибо. Это то, что я искал :) – Reman

Смежные вопросы