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

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

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

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

Q&A

解決済

2回答

1737閲覧

jobでps axの内容をバッファかファイルに全て出力できない

norio13

総合スコア53

Vim

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

0グッド

0クリップ

投稿2016/07/15 07:49

環境 Debian 8.5/Vim 7.4.2038

jobからLinuxのpsコマンドを実行すると端末の横幅を超える部分が出力されません。
例えば、端末の横幅が50だとしたら51以降に出力されるであろう文字列が出力されません。

Vimのsystem関数から実行した場合は全ての出力を取得できました。
ただ、端末から直接psコマンドを実行した時もウィンドウからはみ出した部分は出力されません。

lsコマンドでウィンドウの横幅を超えるファイル名を出力した時は全て出力されました。
psコマンドだと出力内容はウィンドウの横幅に依存するようです。

もし何か足りない設定がございましたらご指摘お願い致します。
当方の環境ではps axで文字数が長い行が出力されるので、このコマンドを使用したサンプルを提示します。

vim -Nu NONE -S sample1.vim

sample1.vim: 出力内容はウィンドウの横幅に依存します。

vim

1let job = job_start(['ps', 'ax'], { 2 \ 'out_io': 'buffer', 3 \ 'out_buf': 1, 4 \ })

vim -Nu NONE -S sample2.vim

sample2.vim: これは全て出力されます。

vim

1let t = @* 2let @* = system('ps ax') 3normal! "*p 4let @* = t

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

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

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

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

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

guest

回答2

0

ベストアンサー

:help job_start() には以下の記述があります。

The job will use the same terminal as Vim.

ps ax は端末の幅によって出力を変えるコマンドのようなので、Vim の端末の幅が参照されてそのような結果なります。
system() で全て出力されるのは、system() の出力先が端末ではなくリダイレクトだからです。
ps に限って言えば、オプションで幅の制御ができるようです。

-w 出力幅を広げる。このオプションを 2 つ指定すると、幅の制限がなくなる。 w 出力幅を広げる。このオプションを 2 つ指定すると、幅の制限がなくなる。 --cols n スクリーンの幅を指定する。 --columns n スクリーンの幅を指定する

投稿2016/07/15 08:14

thinca

総合スコア1864

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

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

norio13

2016/07/15 08:28

さっそくps axwwと書き直したらうまくいきました。 詳しく解説して頂きありがとうございます。
guest

0

ps axww

でどうスかね。
もしくは

env COLUMNS=300 ps ax

投稿2016/07/15 08:07

takasima20

総合スコア7458

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

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

norio13

2016/07/15 08:30

両方のコマンドを試したらうまくいきました。 コマンドは全て出力されるという固定概念を持ってました。 いち早く回答してくださり、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問