4

質問のタイトルが十分に説明されていないことはわかっているので、説明してみましょう。

vim function現在のバッテリー状態を表示するを作成しました。私の機能は次のとおりです。

function! BatteryStatus()

     let l:status = system("~/battery_status.sh")
     echo join(split(l:status))

endfunction

上記の関数を としてマッピングしましたnnoremap <F3> :call BatteryStatus()<cr>。ここで、押すF3と、必要な出力であるバッテリーの状態が表示されますDischarging, 56%, 05:01:42 remainingが、私の質問は、上記の出力を消す方法です。

現在、関数呼び出し後に出力が継続的に表示され、手動で:echoコマンドウィンドウをクリアする必要があります( :)。

したがって、トグルのような動作を実現できるように、関数に必要な変更を行う必要があります。

battery_status.sh

acpi | awk -F ": " '{print $2}'

PS: これは学習演習の一部です。したがって、代替案を提案しないでくださいvim scripts

4

4 に答える 4

3

出力を切り替える簡単で簡単な方法:

let s:battery_status_output_flag = "show"

function! BatteryStatus()

    if s:battery_status_output_flag == "show"
        let l:status = system("~/battery_status.sh")
        echo join(split(l:status))
        let s:battery_status_output_flag = "clear"
    else
        echo ""
        let s:battery_status_output_flag = "show"
    endif

endfunction

s:プレフィックスに注意してください。:help script-variable

于 2012-08-31T06:07:18.920 に答える
2

autocmdあなたは:を定義することができます

:au CursorHold * redraw!

updatetimeVimは、アイドル状態になってから4秒後に(オプションで設定)自分自身を再描画します。

于 2012-08-31T00:33:16.653 に答える