Есть ли способ оценить буквальную строку в строку в кавычках в VIm? - PullRequest
0 голосов
/ 02 марта 2012

То есть я хочу на лету построить строку в кавычках, которая содержит escape-последовательности (более ценно, escape-символы)

Вот мой код:

let s:char = "x"
let s:combo = "\\<C-" . s:char . ">"

Теперь s:combo содержит "\\<C-x>", как я могу перевести его в "\<C-x>", чтобы выполнить комбо с :normal?

Ответы [ 3 ]

1 голос
/ 02 марта 2012

Лучший способ сделать то, что вы хотите, это использовать 'exe':

exe "normal \<c-x>"
1 голос
/ 02 марта 2012

См. :h eval().Что-то вроде:

let s:char = "x"
let s:combo = eval('"\<C-' . s:char . '>"')

Обратите внимание на двойные кавычки внутри одинарных кавычек.

0 голосов
/ 04 марта 2012

Если вы знаете, что такое последовательность управления, вы можете использовать следующее:

let s:char='x'
let s:combo=nr2char(char2nr(toupper(s:char))-0x40)

. Это будет работать для каждого символа латинской буквы.

Кстати, в вашем примере s:combo содержит \<C-x>, а не \\<C-x>. Проблема в том, что :normal ожидает управляющий символ, а не \<C-x>, \<C-x> в двойных кавычках переводится на него.

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