Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

みんなにもっとCtrl-zで実行中のjobをサスペンドできること知って欲しいし、使って欲しい (bash、Zsh)

$
0
0

皆さんこんにちは、かみけん(@kamykn)です。
(最近、アカウント名をkmszkからkamyknに変えました。)

この記事で紹介すること

bashやzshなら実はscreenやtmuxを使わなくてもVimやMySQL CLIなどを一つのウインドウで複数起動できるので、作業が少し楽になるかもという内容です!
これ教えると結構ヘェ〜ってなってる人(年上のプログラマにも意外と…)が多かったので記事にして見ました。

jobとforegroundとbackground

VimやMySQLなどの開いている状態(実行している状態)のjobはCtrl-zでbackgroundに回すことができます。
backgroundにjobは複数保持することができ、fg (foreground)コマンドによって任意のタイミングで呼び出すことができます。

fgとjobs

今回登場するコマンドはfgjobsになります。(あと、バックグラウンドに回す際のCtrl-zも使います。)

VimやMySQLなどの開いている状態(実行している状態)のjobをCtrl-zでbackgroundに回し、そして必要になったときにfgコマンド(foreground)で呼び出しています。

↓↓ jobのサイクルのイメージ

[foreground] ─── 入力:Ctrl-z ───> [background]
     ^                                 │
     └──────────── 入力:fg ────────────┘

実演

おもむろにVimを立ち上げたあとにCtrl-zを押してみましょう。

ctrlz1.gif

Vimが消えました。

Vimはどこに行ったのでしょう。消えたVimを探すべく、今度は jobsと打ち込んでみます。

❯ jobs
[1]  + suspended  vim ~/.vimrc

いました。なにやらVimがsuspended状態であることがわかったので、次に fgと打ち込んでみます。(または単に %1でもいいでしょう。)

ctrlz2.gif

無事に先程のvimを開くことができました。
単にfgとすると最後に起動状態にあったjobsに戻ることが出来ます。

次に複数のjobを立ち上げてみます。

またCtrl-zでもどって、今度はmysqlコマンドを叩いてみます。
再度Ctrl-zでログイン中のmysqlをsuspendし、jobsコマンドでmysqlが増えていることが確認できました。

❯ jobs
[1]  - suspended  vim ~/.vimrc
[2]  + suspended  mysql -u root -p

今度はMySQLとVimを交互に開いてみます。
%1、Ctrl-z、%2、Ctrl-z、%1、Ctrl-z …

ctrlz3.gif

または%1の代わりにbashならfg 1でもOKです。(Zshだと fg %1になります…)

自分の使い方

自分はそんなにたくさんサーバーにSSHする人ではないですが、1環境(サーバー)に対して1ウインドウ(tmuxなどのタブなど)開いておけばバックグラウンドで複数jobを立ち上げることで満足な感じになりました。

あと、バックグラウンドを使い始めると、気がついたら実はVimが複数立ち上がってたみたいなことが増えてくるので、最近はプロンプトにjob数を表示したりしてます。

スクリーンショット 2018-08-29 0.15.45.png
一番右の1がjob数になっていて1つjobが立ち上がっていることがわかります。
設定はこんな感じです。

local prompt_location="%F{081}%B%~%b%f"local promot_mark="%B%F{208}%(!,#,$) %f%b"local status_code="%(?,,%F{208} / %f%B%F{red}%?%f%b)"local number_of_jobs="%(1j.%F{208} / %f%F{226}%B%j%b%f.)"PROMPT="
${prompt_location}%B"'$vcs_info_msg_0_'"%b${number_of_jobs}${status_code}${promot_mark}"

1行空行作ってプロンプトが入り、更に改行して常にコマンドが左から始まるようにしています。
(終了ステータスもnon-zeroのときに赤字ででます。vcs_infoは他の方の記事をご参考いただけると…!)
Vim乱立はこれでなんとか防げそうです…。

これで、tmuxやscreenを使うことができないような極限状態でも生き抜くことができるかもしれませんね…!

以上で共有は終わりです。
みなさんのCLIライフが捗りますように!!


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>