Help us understand the problem. What is going on with this article?

今更ながら Rails Tutorial (その1.5) - posh-gitインストールとVSCodeのカスタマイズ -

More than 1 year has passed since last update.

この記事について…

普段はRuby on Railsと無縁なプログラマなんですが、今更ながら面白そうという単純な理由からRuby on Rails Tutorialをやってみようと思い立ちました。今回は前回の記事で残件として挙げたものを解決する番外編という形でやっていければと思います。
尚、Rails 5.1に対応した第4版を用いて、かつVagrantを使用した環境で進めていきます。

残件(再掲)

  1. PowerShell上でGitコマンドタブ補完ができるようにする。
    posh-gitを使用すると可能になると何処かで読んだことがあるので、挑戦してみようと思います。
  2. VSCode上で2つ以上ターミナルを立ち上げたときにキーボードショートカットでターミナル切り替えできるようにする。
    今のところPowerShellを2つ立ち上げて、1つはGit/Herokuのコマンドを打つ、もう1つはVagrantで構築した仮想環境に接続して Railsのコマンドを打つ、という形で学習しています。(この方法がいいのかどうかも含めて試行錯誤中…。) デフォルト設定ではターミナル切り替えにキーボードショートカットが割り当てられていないようなので、よさげなショートカットを設定しようと思います。

1. posh-gitのセットアップ

posh-gitはGitとPowerShellを統合したPowerShellモジュールです。導入するとGitコマンドのタブ補完や現在のブランチ名の表示ができるようですが、"Po"wer"Sh"ellから文字を取ってposhなんでしょうか。
詳細はGitHubのREADME.mdを参照します。

インストールする

  1. 前提条件

    • PowerShell 2.0以上であること。
      ⇒ Windows 10であればPowerShell 5.0系なので大丈夫です。今回はPowerShell GalleryからインストールするのでPowerShell 5.0以上である必要があります。
    • スクリプト実行ポリシーをRestrictedから変更すること。
      Set-ExecutionPolicy RemoteSigned -Scope CurrentUserとして、現在のユーザーのみRemoteSignedに変更します。
      但し、今回は後述するPowerShellプロファイルを使用して起動後にRestrictedに戻るようにしています。
    • PowerShell上からGitコマンドを使用できること。
      ⇒ Git for Windowsのインストール時に「Use Git from the Windows Command Prompt」を選択していれば大丈夫です。
  2. PowerShellGit経由でのposh-gitインストール
    PowerShellで以下のコマンドを実行します。

PowerShellGet\Install-Module posh-git -Scope CurrentUser
Update-Module posh-git
  1. PowerShellプロファイルからposh-gitをインポートする設定 以降、PowerShellでImport-Module posh-gitとコマンドを実行するとposh-gitが起動します。 しかし、毎回コマンド実行するのは面倒なので、PowerShellプロファイルを使用しましょう。 PowerShellで以下のコマンドを実行します。
notepad $profile.CurrentUserCurrentHost

メモ帳が立ち上がると思いますが、次のように記述します。

Microsoft.PowerShell_profile.ps1
Import-Module posh-git
Set-ExecutionPolicy Restricted -Scope Process

このプロファイルはPowerShell起動時に読み込まれるPowerShellスクリプトです。
従って、スクリプト実行ポリシーがRestrictedでは読み込みできない為に前提条件の項でRemoteSignedに変更している訳ですが、デフォルトの実行ポリシーから(現在のユーザーのみとはいえ)変更するというのは気持ちのいいものではありません。
そこで、2行目でSet-ExecutionPolicy Restricted -Scope Processとすることで、せめてPowerShell起動中だけは元の実行ポリシーに戻すようにしています。とはいえ、PowerShellスクリプトをエクスプローラから直接起動すれば動作してしまうのでなんだかなぁという感じです。他にいい方法があればご教示いただければ嬉しいです。

以上でPowerShell上からGitコマンドのタブ補完ができるようになりました。便利だなー。

2. VSCodeのキーボードショートカットカスタマイズ

VSCodeのキーボードショートカット設定を変更します。
統合ターミナルウィンドウへフォーカスするショートカットキーを設定するを参考にさせていただきました。

keybindings.json
// 既定値を上書きするには、このファイル内にキー バインドを挿入します
[
{ "key": "ctrl+;",                "command": "workbench.action.terminal.focus",
                                     "when": "editorTextFocus" },
{ "key": "ctrl+;",                "command": "workbench.action.focusFirstEditorGroup",
                                     "when": "terminalFocus" },
{ "key": "ctrl+tab",              "command": "workbench.action.terminal.focusNext",
                                     "when": "terminalFocus" },
{ "key": "ctrl+shift+tab",        "command": "workbench.action.terminal.focusPrevious",
                                     "when": "terminalFocus" }
]

このように記述することで、ctrl+;を押下すると編集領域とターミナル領域を行き来し、ctrl+tab ctrl+shift+tabをターミナル領域で押下すると複数立ち上げたターミナルを切り替えできます。これも便利だなー。

ということで、前回残件として挙げたものは解決できました。またチュートリアルを進める中で開発しづらい点が出てきたときは適宜解決していこうと思います。

hideki0145
現在は基幹業務系システムの設計・開発・運用サポートを主に行っています。 (開発経験:Magic xpa Application Platform / Magic uniPaaS V1Plus / Ruby on Rails / Visual C++ MFC)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away