1. ホーム
  2. vim

[解決済み] コマンドアサインでexeモードコマンドを連結する

2022-03-05 19:25:59

質問

いくつかのファイルに、2つの固定要素と " レジスタに登録します。マクロを使ってやっていたのですが、最近ファイルの形式が統一されなくなってきました。

ある関数で4つのレジスタを設定しています。

@v='========= BEGIN'
@b='========== END'
@n=' =========={{{'
@m=' ==========}}}'

私は、折り畳みが必要な場所を見つけ、記述子を引っ張ってきて、次のように設定し、最初と最後に貼り付けます。

let @z=@v.@".@n
let @x=@b.@".@m

レジスタの割り当てを1つのマップに結合するために、次のような思いつく限りの組み合わせを試しました。

nnoremap <leader>X :'let @z=@v.@".@n | let @x=@b.@".@m'

動作させることができなかったので、関数に追加し、関数呼び出しをXキーにマッピングしました。

キーマッピングでコマンドの割り当てを連鎖させる方法はないのでしょうか?ファンクションは動作しますが、コンセプトは他の場所でも役に立つと思います。

どのように解決するのですか?

使用方法 <bar> または \| .

nnoremap <leader>X :'let @z=@v.@".@n <bar> let @x=@b.@".@m'
nnoremap <leader>X :'let @z=@v.@".@n \| let @x=@b.@".@m'

を見てみましょう。 :help map_bar