Vim関数を1行マッピングに書き換える

Vim関数を1行マッピングに書き換える

これ働く:

nmap <silent> <S-t> :call InventTab()<CR>
function InventTab()
    set expandtab!
    if &expandtab
        retab
        echo 'spaces'
    else
        retab!
        echo 'tabs'
    endif
endfunction

1行に変更してみました。

nmap <silent> <S-t> :set expandtab!<CR>:if &expandtab<CR>:retab<CR>:echo 'spaces'<CR>:else<CR>:retab!<CR>:echo 'tabs'<CR>:endif<CR>

これで問題は、後で「続行するにはEnterキーを押すか、コマンドを入力してください」という印刷を要求することです。他のものを追加すると、<CR>これは行われなくなりますが、echo出力は消去されます。

出力は表示されますが、追加の項目は表示されないようにするにはどうすればよいですか?

結果(より受け入れられた回答細部):

nmap <silent> <S-t> :set expandtab! ^V| if &expandtab ^V| retab ^V| echo 'spaces' ^V| else ^V| retab! ^V| echo 'tabs' ^V| endif<CR>

ベストアンサー1

<CR>コマンド間で 'を(^V|入力して^Vテキストが挿入される場所)に置き換えると機能しますか?^VCtrl-vCtrl-v

おすすめ記事