質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Q&A

解決済

1回答

2746閲覧

scrなどの特定のコマンド結果をバッファに出力したい

norio13

総合スコア53

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

1グッド

0クリップ

投稿2016/02/12 08:09

  • :scr
  • :com
  • :au
  • nnoremapなどのmap系コマンド

これらのコマンドを実行するとlessのように編集ができず、閲覧しかできません。

次のコマンドを試しましたがダメでした。

vim

1:.!vim -c ":au"

これはコマンド結果の一部しか出力されませんし、下記のようにansiエスケープシーケンスが含まれてしまいました。

先ほどのコマンドの出力結果の一部

^[[?1049h^[[?1h^[=^[[1;24r^[[34l^[[34h^[[?25h^[[23m^[[24m^[[0m^[[37m^[[H^[[J^[[24;1H^M ^[[35m--- Auto-Commands ---^[[0m^[[37m^M^M ^[[35mfiletypedetect^[[0m^[[37m ^[[35mBufEnter^[[0m^[[37m^M^M *.xpm if getline(1) =~ "XPM2" | setf xpm2 | else | setf xpm | endif^M^M *.xpm2 setf xpm2^M^M

バッファに出力する方法がございましたら教えてください。

mpyw👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

:redir コマンドが使えるかと思います。次のように使います。

vim

1command! -nargs=1 Capture call Capture('<args>') 2 3function! Capture(cmd) abort 4 redir => mes 5 execute a:cmd 6 redir END 7 call setreg(v:register, mes, 'V') 8endfunction

このように :Capture コマンドを定義し、:Capture scr などのように :Capture コマンドに続けてコマンドを入力して実行すると、出力内容がクリップボードに格納されますので p などを押してバッファにはりつけてください。クリップボードを介したくない場合は append() 組み込み関数などが便利かと思います。

この辺の作業をうまくやるためのプラグインもあります。
capture.vim

投稿2016/02/12 11:24

machakann

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

norio13

2016/02/12 13:31

redirを使う事で解決しました。 分かりやすいコードもありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問