我的.vimrc文件包括以下几行:
let read_path = '/var/www/html/readContent.html'
function ReadContentProcess()
if (expand('%:p') == read_path)
call feedkeys("\<C-A>")
call feedkeys("\<C-V>")
endif
endfunction
Run Code Online (Sandbox Code Playgroud)
当我运行时call ReadContentProcess(),出现以下错误:
Error detected while processing fucntion ReadContentProcess:
Line 1:
E121: Undefined variable: read_path
E15: Invalid expression: (expand('%:p') == read_path)
Run Code Online (Sandbox Code Playgroud)
为什么?我已经定义read_path为一个变量,为什么 vim 告诉我它不存在?
变量有一个默认范围。在函数外部定义时,它具有全局作用域g:。在函数内部,它有一个局部作用域l:。所以,你需要告诉你想通过其前缀VIM可变read_path用g:
let read_path = '/var/www/html/readContent.html'
function ReadContentProcess()
if (expand('%:p') == g:read_path)
call feedkeys("\<C-A>")
call feedkeys("\<C-V>")
endif
end function
Run Code Online (Sandbox Code Playgroud)
来自:help g:(及其后面的部分)
全局变量 g:var g:
内部函数全局变量通过“g:”访问。省略这将
访问函数的局部变量。但是 "g:" 也可以用在任何其他
如果你喜欢的地方。
局部变量 l:var l:
访问内部函数局部变量时无需预先添加任何内容。
但是你也可以在前面加上“l:”,如果你愿意的话。但是,不预先添加“l:”
您可能会遇到保留变量名称。例如“计数”。它本身
指的是“v:count”。使用 "l:count" 你可以有一个局部变量
一样的名字。