0

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実行のトグルキーとしてF5を使用し、2番目の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
4

1 に答える 1

0

executeExコマンドを実行します。そして、あなたが行っていない変数を展開するためにのみ必要なので、

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"何かがいくつかの変数置換を取得する場合です.

于 2012-08-06T08:25:12.600 に答える