Пустой регистр в vimscript - PullRequest
       24

Пустой регистр в vimscript

1 голос
/ 07 апреля 2011

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

Р.Е.
let r = inputdialog(toregister)
let @r = ""

(r = символ, полученный из inputdialog)

Это тоже не работает:
let @{r} = ""

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

Вместо использования :execute и необходимости знать о внедрении кода, я предлагаю вам использовать функцию setreg:

call setreg(tolower(r), "")

tolower() здесь, потому что если пользователь поставляет A в качестве регистраname, тогда пустая строка будет добавлена ​​к регистру a вместо его очистки.

setreg() займет только первый байт r, и если это допустимое имя регистра, то ошибки не будут выданы (setreg("abc", "") будет пустой регистр a).

3 голосов
/ 07 апреля 2011
let r = inputdialog("which register do you want to empty?")
exe 'let @'.r.' = ""'

Не забудьте протестировать r длиной в один символ, и в пределах диапазона az (во избежание внедрения кода)

...