viをPowershellで使いたい

laptop computer showing c application

古株unixプログラマとしてはviを使いたい。

Powershellを管理者権限で開いて、Chololatelyをインストール。ProgramData以下にchocolatelyフォルダが有るとインストールするふりするけどインストールしてくれないよ。ありがちなパターンは管理者権限で開かずに下のコマンド貼り付けちゃって、インストールが中途半端に終っちゃってるパターンね。ちゃんと削除してから実行しよう。

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

そしたら choco install vim でインストールできるよ。でも vi って叩いても起動しないよね、しょうがない。エイリアス設定してやらなきゃいけない。

シェルのスタートアップスクリプトの場所は $profile に保存されてる。vim $profile って開いてから、Set-Alias vi vim って記述したら出来上がり、だけど、多分そのままじゃ動かないよ。デフォルトではPowershell自体がセキュリティとしてスクリプトの実行を行わないようになってるからね。Get-ExecutionPolicy実行すると、Restictedって表示されると思う。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

ってして、再起動するとお望み通りの挙動になるよ。

で、意気揚々として使い始めてから、クリップボードのテキストとか貼り付けたくなるんだよね。最近はほぼGeminiとかChatGPTにコード書いてもらっちゃってるからね。で、Ctrl+Vとかやって、固まったvimを強制終了しちゃったりしてどうにも消せないお化けファイルが出来上がる。

  1. Ctrl + V は、vimでビジュアルモード移行のショートカットとして予約されちゃってる。Shift + Ctrl + Vとか使っておけ。でもね、まだ貼り付けは待て
  2. viをEscでコマンドモードにして、:set paste とかやっとかないと、テキストを頑張って整形してから貼り付けようとし始めるぞ。固まったように見えてたのは、一生懸命整形しようとしてたのが待てなかったせいだ。でもそもそも整形されても迷惑なのだ。set pasteのコマンドを実行しておくと、set unpaste(だっけ?)のコマンド実行するまでは入力の自動インデントの類を抑制できるぞ。

で、おばけファイルが出来ちゃったとき。色々試してみたらいいさ、俺もいろいろ試した。でも俺の場合にはファイル名に不可視文字がとか云々いろいろCopilot君が指示してきたけど、結局低レベルのファイル削除(NTFS)じゃないと消えなかった。数十年ぶりに耳にしたコマンドだけどRobocopyを使うよ。空のディレクトリを作って、そのディレクトリと、ゴミファイルが混じっちゃったディレクトリをファイルシステムレベルでミラーリングしてゴミファイルをなかったことにする強力コマンド。間違って使うと地獄だからちゃんと挙動とか理解したうえで使おうね。わからなかったら手を出すな。

mkdir empty
robocopy empty . /MIR

以上、今日の午前中の苦悶と学び。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です