我安装了nodejs和jslint,并在ftplugin目录下创建了javascript.vim文件。 javascript.vim包含以下行:
setlocal makeprg=jslint\ %
setlocal errorformat=%f:%l:%c:%m
nmap <F5> :w<CR>:make<CR>:cw<CR><CR>:copen<CR>
这将打开jslint报告错误的快速修复窗口。现在我想在第一个F5运行make和在第二个F5关闭错误窗口上显示错误窗口时使用F5作为切换键。
我为此
创建了以下代码setlocal makeprg=jslint\ %
setlocal errorformat=%f:%l:%c:%m
let s:showMakeWnd = "0"
function! ToggleMake()
echo "Make Wnd mode: " . s:showMakeWnd
if s:showMakeWnd == "0"
execute ":w<CR>:make<CR>:cw<CR>:copen<CR>"
elseif
execute ":cclose<CR>"
endif
let s:showMakeWnd = (s:showMakeWnd == "0" ? "1" : "0")
endfunction
nmap <F5> :call ToggleMake()<CR>
但在按F5后,我收到以下错误:
"<CR>:make<CR>:cw<CR>:copen<CR>"
Error detected while processing function ToggleMake:
line 10:
"<CR>:make<CR>:cw<CR>:copen<CR>" E212: Can't open file for writing
答案 0 :(得分:0)
execute
执行 Ex 命令。你只需要它来扩展变量,你没有这样做,所以
execute ":w<CR>:make<CR>:cw<CR>:copen<CR>"
你应该写
w
make
cw
copen
您需要的语法是normal
命令
norm :w<CR>:make<CR>:cw<CR>:copen<CR>
但它不必要地更脆弱(我不确定这里的特殊字符;常见用法是exe "norm something"
其中某些获得一些变量替换。