search
LoginSignup
244

posted at

updated at

Organization

Windowsはクソ!という方に贈るWindowsターミナルの設定

ターミナル(黒画面)は好きですか?

賛否両論あるかと思いますが、
ターミナル(Windowsのコマンドプロンプト)、嫌いな人多いと思います。

なんでもかんでもGUIで済まそうとするおじさんもいるのも事実。
まあマウス使うからわかりやすいんですよね。

今回はその逆で、Windowsでターミナルを活用する方法を語っていきたいと思います。

Linux/Unixを触ったときに思うこと

みなさんは、Dockerを使うのにも関わらずWindowsを強要されてつらい思いをしたことありませんか?

MacやSolarisをはじめとするUnixも、Linuxも、どちらもターミナルの機能が強すぎてGUIがおまけみたいなところがあります。

それに、黒画面のターミナルがとてつもなくカッコよく映ります。
それが使いこなせるんだからもうイキっちゃいよね。

「もうぜんぶコマンドでよくね?」

みたいに思うはずです。

え?そんなことない?

Mac -> Windowsでつらいこと

なんでもかんでもGUI。
まあ便利ではあるんだけどね。

というかHomebrewが便利すぎる。
Ubuntuはapt、RedHat系はyum(今はdnf)もあるし。

コマンドたたけばいろんなものがそろうのに対し、Windowsはブラウザを開きダウンロードしてインストールする。

まあまあ面倒である。

Windowsは総じてクソ?

Windowsは初心者向けなんです!
同じ知識で初心者から上級者まで使うことができる最強のOSなんです。

というわけで、今回はWindowsのターミナルを活用するための方法を紹介していきます。

ターミナルを考えなおす

MacやLinux使いがコマンドプロンプトを使うと、
まずls -> dirのようにコマンドが違うところでつまずきます。

まずはコマンドプロンプトを捨てましょう。
コマンドプロンプトは下位互換のために残された、いわばIEのような存在です。

まずは、Win+Rでcmdと打つのをやめるところから始めましょう。

ここで実施するのは2つです。

Windows Terminalの導入

Microsoftの新しい端末アプリであるWindows Terminalを導入します。

Windows Terminal - Microsoft Store

以降は、Win + R から「wt」と打ち込んでWindows Terminalを使うように心がけましょう。

PowerShellの最新を使う

コマンドプロンプトではなくPowerShellを使いましょう。
PowerShellを使うだけでもQoLが爆上がりします。
特に、新しいバージョンを使うことでさらによくなります。
(なぜかInsiderPreviewだと標準のPowerShellが文字化けしたので入れなおした)

PowerShell 7.x

なお、PowerShell7は後述の方法でもインストールできるので、後回しでもOKです。

これだけでも見た目がだいぶ変わります。これでマカーにダサいとは言われない。はず。
lsもcdもclearも使えます。これだけで価値あるんじゃね?
image.png

Windows TerminalはWSLのターミナルもまとめて表示できますので、複数のWSLを使っていたりする場合はさらに便利になります。
image.png

Homebrewの代替を探す

マカーにマウントとられる最大のポイント、それがHomebrew。

Windowsにはそんなものない?

???「あるよ」

Windows Package Manager(通称winget)というものが公開されました。

winget-cli

これで完璧である。

Windows Terminalから、以下の感じで実行できれば準備完了。

> winget -v
v0.2.2521 プレビュー

wingetの使い方

検索

> winget search <パッケージ名>

例えば、.NET Coreは以下のように検索できる。
4系は多分ライセンスの問題もあるのか入っていない模様

> winget search dotnet
名前                        ID                                バージョン                 一致
-------------------------------------------------------------------------------------------------
.NET Core                 Microsoft.dotnet                  3.1.402               Moniker: dotnet
.NET Core Preview         Microsoft.dotnetPreview           5.0.100-rc.2.20479.15 Command: dotnet
reko                      uxmal.reko                        0.9.1.0               Tag: dotnet
Unity Hub                 UnityTechnologies.UnityHub        2.4.0.0               Tag: dotnet
Stride                    Stride.Stride                     5.0.1                 Tag: dotnet
Smallbasic                Microsoft.SmallBasic              1.2                   Tag: dotnet
Ironpython 2              Microsoft.Ironpython2             2.7.10                Tag: dotnet
.NET Core Runtime         Microsoft.dotnetRuntime           3.1.8.29220           Tag: dotnet
.Net Framework            Microsoft.dotNetFramework         4.8                   Tag: dotnet
Jchem .NET api            ChemAxon.jchemdotnetapi           20.19.0               Tag: dotnet
Powershell Preview (msix) microsoft.powershell-preview-msix 7.0.2                 Tag: dotnet

名前かIDを入力することで、そのパッケージをコマンドからインストールできる。

.NET Coreは名前にスペースが入っているので、IDを使う方法しか見つからなかった。

> winget install microsoft.dotnet

なお、wingetがあれば PowerShell7も入れられるようなので、以下のコマンドでも幸せになれたみたい。

> winget install microsoft.powershell-preview-msix

入れておきたいアプリたち

必要に応じて足していきますが、ひとまず思いついたものを列挙。

> winget install git
> winget install Microsoft.VisualStudioCode
> winget install slack
> winget install 7zip
> winget install docker

git for Windowsは改行コードの問題があるので、

Windowsのみしか使わなければ特に考えなくてもいいとは思いますが、以下のほうが確実みたいです。

> git config --global core.autocrlf input

インストール済みのパッケージ一覧と削除

なんと、内部的にはインストーラのダウンロードと実行をしているようなので、
アンインストールは既存の方法でしかできない模様。
そこばかりは我慢するしかないかな・・・

v1.0.11451の時点でアンインストールコマンドが実装されています。

インストール済みの一覧取得

winget list

アンインストール

winget uninstall <アプリ名>

サイレントインストール

インストール時にGUIが出てうざい場合には、-hオプション

winget <アプリ名> -h

MS Storeの対応によるソース選択

ストアアプリからのインストールに対応したことで、次のようなエラーが出る場合があります。

> winget install microsoft.powershell
複数のパッケージが入力条件に一致しました。入力内容を修正してください。
名前               ID                   ソース
-----------------------------------------------
Microsoft Envision 9NBLGGH5PB0S         msstore
PowerShell         Microsoft.PowerShell winget

その場合は、次のように明確にインストールのソースを指定すると良いです。

> winget install microsoft.powershell -h -s winget

-sを引数ととることで、 wingetmsstoreを明示的に選択できます。

Vimの導入

次に大事なのがvimです。
これがないとターミナルとは言えないですよね。

先駆者 がいらっしゃったので、それに倣って進めていきます。

Emacs使いの皆様向けの手順はあるようですが、ガチ勢はおとなしくWSL使ったほうがよげですね。

インストール

wingetでさくっとインストールします。

> winget install vim

しかし、このままではvimはつかえません。(パス通ってないので)

> vim
vim : 用語 'vim' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを
確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ vim
+ ~~~
    + CategoryInfo          : ObjectNotFound: (vim:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

ps1の実行権限変更

PowerShellファイルの実行は標準で無効化されているので、
さくっと変更をしてしまいます。
(InsiderPreviewとかははじめから使えるぽい)

> set-executionpolicy remotesigned
> get-executionpolicy
RemoteSigned

RemoteSignedと出ていればOK。

プロファイルを確認

> $profile
C:\Users\XXXXXXXX\OneDrive\ドキュメント\PowerShell\Microsoft.PowerShell_profile.ps1

なぜOneDriveなのかは不明だが(たぶん連携したせい)、
ひとまずそこにあるそうなのでファイルをいじる。

エイリアスを設定することで、powershellからvimが使えるようになります。

Microsoft.PowerShell_profile.ps1
set-alias vi 'C:\Program Files\Vim\vim90\vim.exe'
set-alias vim 'C:\Program Files\Vim\vim90\vim.exe'

※インストールするvimによってパスが変わりますので注意しましょう!

さいごに、書き込んだprofileを反映します。(sourceコマンドと同等)

> . $profile

設定が終わったら、以下のコマンドを打ちこんで動くことを確認しましょう。

> vim $profile

うまくいきました。あとは:q!で終了しましょう。
image.png

su / sudo

windowsでターミナルを使う際に、いつも面倒なのが管理者権限で実行。

あそこまでとは言わないけど、簡単に管理者で実行したい。

というわけで、この神記事を参考に作業開始。

powershell7 previewはエイリアスがpwshなので、
それに合わせた版を使用します。

> cd
> git clone -b feature/wt-pwsh7 https://github.com/hikaruright/sudo.git

その後、以下を環境変数に追加。

(コマンドでやると変なことになったので、PowerShellがPreviewのうちは、GUIで操作したほうがよさそう)

%USERPROFILE%\sudo

この状態でWindows Terminalを起動し、suと打つと管理者権限でwindows terminal(+PowerShell7)が新しく起動します。
sudoを使えばGUIを管理者権限下で実行することも可能。これで怖いものはない。

さいごに

まだまだ発展途上とはいえ、Windowsのターミナルでもやれることは増えてきています。

Windowsが嫌いな人も、Docker使うときにコマンドプロンプトを使う程度の方も、
Windowsでターミナルを使いこなしてドヤッてはいかがでしょうか。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
244