вставьте в "vimL normal execute" строку, расположенную в памяти регистра - PullRequest
1 голос
/ 23 мая 2019

Как мне выполнить команду, которая включает данные регистра внутри функции vimL?

скажем (в качестве примера теста) Я хочу открыть файл, строка направления которого находится в регистре z.Во время обычного исполнения я мог нажимать клавиши:

:e <c-r>z<CR>   # CR is "carret return", <c-r>z is "paste registry z"

В vimL все усложняется.Я попробовал следующие варианты и не работает.

fun! OpenFileInBrackets()
    exe 'normal! :e \<c-r>z'."\<cr>"
    exe 'normal! :e <c-r>z'."\<cr>"
    norm! :e <c-r>z<CR>
endfun

Какие есть варианты?

спасибо!

1 Ответ

2 голосов
/ 23 мая 2019

Перемещение моего комментария к ответу.

Я бы предложил использовать функции внутри скриптов vim, а не их эквиваленты в нормальном режиме.В этом случае, чтобы получить значение из регистра, используйте getreg().

Вот краткий пример:

function OpenRegZ()
    let filename = getreg("z")
    execute "edit " . fnameescape(filename)
endfunction

Список доступных функций можно найти по адресу :help function-list.

Редактировать: Добавлено fnameescape() за предложение :help execute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...