1
我用一個單一的功能(即一個創建)知道,如果角色旁邊的當前光標位置是空間Vim的:函數getline和非ASCII字符
function Test_caractere_suivant_espace()
"Test si le caractère suivant est une espace"
let position = getcurpos()
let ligne = getline(position[1])
let car_suivant = ligne[position[2]]
if car_suivant == ' '
return 1
else
return 0
endfunction
它工作得很好......但僅使用ASCII字符,而不是UTF-8中沒有Ascii字符。
當然,我可以嘗試當前字符的兩個第一位的值,但無論如何要在由getline
返回的數組中有UTF-8字符而不是一個單字節值的列表?
的解決方案
DJMcMayhem一個PIST建議使用
let ligne = split(getline(position[1]), '\zs')
的解決方案,但仍有確定下一個字符一個問題。 下面是函數
function Test_caractere_suivant_espace()
"Test si le caractère suivant est une espace"
let position = getcurpos()
let ligne = split(getline(position[1]), '\zs')
let car_suivant = ligne[position[2]]
echom car_suivant
if car_suivant == ' '
return 1
else
return 0
endfunction
的新版本在此行
α α α α α α α α α α
如果我調用該函數的最後α之前,我得到
Error detected while processing function LB_content[2]..Test_caractere_suivant_espace:
line 4:
E684: list index out of range: 25
E15: Invalid expression: ligne[position[2]]
line 5:
E121: Undefined variable: car_suivant
E15: Invalid expression: car_suivant
line 6:
E121: Undefined variable: car_suivant
E15: Invalid expression: car_suivant == ' '
感謝您的快速回答。不幸的是,這似乎不起作用 –
我認爲這是因爲我需要調整當前角色的位置。 'let car_suivant = ligne [position [2]]' –
@Maïeul你能澄清一下哪些工作不正常嗎? 'split(getline(n),'\ zs')'返回一個字符列表,並且將它索引到非ASCII位置仍然返回單個非ASCII字符,所以我不確定哪些不起作用。 – DJMcMayhem