0

つまり、エスケープシーケンス(より貴重なのはエスケープ文字)を含む引用符で囲まれた文字列をその場で作成したいのです。

これが私のコードです:

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

s:comboが含まれていますが、コンボを実行するため"\\<C-x>"にどのように評価できますか?"\<C-x>":normal

4

3 に答える 3

1

を参照してください:h eval()。何かのようなもの:

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

一重引用符内の二重引用符に注意してください。

于 2012-03-02T04:38:50.640 に答える
1

あなたが望むことをするための最良の方法は'exe'を使用することです:

exe "normal \<c-x>"
于 2012-03-02T06:16:53.607 に答える
0

制御シーケンスとは何かがわかっている場合は、代わりに次を使用できます。

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

。これは、すべてのラテン文字文字に対して機能します。

ちなみに、あなたの例では、ではなく、s:comboが含まれています。問題は、二重引用符で囲まれたではなく、制御文字がそれに変換されることです。\<C-x>\\<C-x>:normal\<C-x>\<C-x>

于 2012-03-04T04:07:08.103 に答える