treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

コマンドプロンプト上でLinuxのようにvi(vim)を起動できるようにする

以前の記事で
(1/2)DOSコマンドでリモートログインしたい場合 - treedown’s Report

(2/2)DOSコマンドでリモートログインしたい場合 - treedown’s Report

という記事をご報告しました。
PSEXEC/Powershell/OpenSSH for WindowsなどでWindowsでもLinuxのようにコマンドラインでリモート操作をするような環境が用意できる、という主旨の記事ですが、WindowsDOS)標準機能ではテキストエディタでファイルを編集しようにもエディタがGUIなので、リモートコンソール内でのファイル編集ができない、という残念ポイントがありました。

これをうまくやるには、操作対象となり接続先PCでviコマンドを用意しておく必要があります。Windows用のフリーソフトvimを使ってviコマンドを用意してみましょう。

見る人によっては 多少不完全な記事になっておりますが、ご容赦ください。

環境の情報

例によって今回の環境をご紹介します。
OSはWindows10とWindows8.1の両方で確認しています。両方とも64bitエディションを利用しています。と、いってもWindowsVistaやWindows7時代から使っていたOS標準の設定を使っていますのでOSによる差異も32ビット&64ビットによる差はありません。
対象のviコマンドとしてこちらのvim.exeを使わせていただくことにします。
Vim - KaoriYa<im Windows向けコンパイル済みバイナリ>

Vim — KaoriYa

こちらでありがたくダウンロードさせてもらいましょう。
ダウンロードは32bit版と64bit版の2種類がありますので、該当のWindowsOSに合わせて用意します。

設定の内容

ここから、以前に設定したコマンド(ソフト)をファイル名を指定して実行欄から起動する設定を実行して環境を用意しておきます。
参考記事:ランチャー好きに捧ぐプログラム起動のための環境設定 - treedown’s Report

概要としては、(上記記事のダイジェスト版)

  1. プログラム格納場所「C:\Users\Public\UserPrograms」フォルダを作成、ランチャ的ショートカット保存場所「C:\Users\hattchi\userLunch」フォルダを作成します。
  2. プログラム格納場所「C:\Users\Public\UserPrograms」の配下に対象のソフト(今回はvim74-kaoriya-win64)を格納します。
    ※最終的に「C:\Users\Public\UserPrograms\vim74-kaoriya-win64」というフォルダができ、「C:\Users\Public\UserPrograms\vim74-kaoriya-win64\vim.exe」が格納されるようにします。
  3. 「C:\Users\Public\UserPrograms\vim74-kaoriya-win64\vim.exe」のショートカット「vim.exe - ショートカット」を作成しましょう。vim.exe - ショートカット.lnkを「vi.lnk」にリネームします。
    ※ショートカット拡張子.lnkは表示されないので「vim.exe - ショートカット」を「vi」とリネームするだけでOKです。このショートカットをランチャ的ショートカット保存場所「C:\Users\hattchi\userLunch」フォルダに格納します。


最終的に以下の画面のような環境になります。
図:ファイル配置&設定完了後の図

f:id:treedown:20160220202400p:plain

駆け足ですがひとまずこれだけできれば事前準備完了です。

より使いやすくするために設定を一つ

ここから、もう一点。
DOSコマンドを入力する際に、「ping XXX.XXX.XXX.XXX」のようにします。
pingコマンドは外部コマンド、といいまして、%SYSTEMROOT%内に「ping.exe」というバイナリファイルが用意されていますが、この.exeの部分はコマンド実行時には入力をする必要がありません。
Linuxでもコマンドを入力する際に、「vi FileNAME」という具合にしますので、このままですと、ファイル名を指定して実行欄で起動する場合には「vi」のみで起動するのですが、コマンドプロンプトDOS窓)上から実行しようとした場合「vi.lnk」とフルのファイル名を入力する必要があります。
※パスは切ってあるのでどこからでも実行可能なのですが、コマンドプロンプトDOS窓)上で実行する場合にはDOS上で認識しているフルファイル名を入力しなければ対象ののコマンドが実行できない、という特徴があります。

よって、この.lnkの部分をなしにしてしまう設定を「環境変数内で設定」してしまいましょう。
以下の画面です。
図:PATHHEXTの設定画面

f:id:treedown:20160220202707p:plain
システム環境変数内の「PATHHEXT」欄を開き、変数値に「.LNK」を追加します。
※区切り文字「;」が必要になりますので追記する文字は正確には「;.LNK」を追加することになります。

ここまでの設定が完了したところで、システム環境変数の設定内容を反映させるためにPCを再起動しましょう。

再起動後、動作を確認してみる

早速コマンドプロンプトを開いて「vi test.txt」を起動してみました。DOS窓内でエディタが開きます。ヨシヨシ。
ファイルを保存したら、一つ気になる点が出てきました。デフォルト保存場所がvim.exeの保存先である「C:\Users\Public\UserPrograms\vim74-kaoriya-win64」になってしまいます。あれ?カレントディレクトリは「C:\Users\%USERNAME%\Documents」なんですが…。
つまり、この構成でショートカット経由でvim.exeを起動しているので、カレントディレクトリは「C:\Users\Public\UserPrograms\vim74-kaoriya-win64」になるということみたいです。これはちょっと使いづらいなぁ…。
つまりviコマンド投入時はファイルをフルパス指定しなければならない、ということが一つの制限事項となりそうです。
次善の策として、vim.exeを起動するときには「vi "%cd%\test.txt"」とすると現在のカレントディレクトリ「C:\Users\%USERNAME%\Documents」を取得してファイル編集が起動してくれます。
図:viコマンド実行してみた図

f:id:treedown:20160220202821j:plain

これならいちおう起動はしますけど…
図:viコマンド実行後

f:id:treedown:20160220202834j:plain

ちょっとイマイチですが、PSEXEC/Powershell/OpenSSH for Windowsなどでviエディタが利用できる、という点を考慮すると多少は我慢しましょうか。
※本当は設定すればLinuxのviで動作しているようにカレントディレクトリにあるファイルからviを起動することが可能なはずです。もしくはそもそも「C:\Users\Public\UserPrograms\vim74-kaoriya-win64」のパスを切れば思い通りの動作をしてくれるのかもしれませんが、今日はこの辺で。