開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
むしろ sl のような typo 矯正系ジョークプログラムを……何かネタないかな。
— yoh2 (@yoh2_sdj) August 24, 2019
そういえばGo言語で外部プログラムを起動するプログラムを書いたことないし、せっかくだから調べたついでに簡単なコードを書いてみた。ジョークは思いつかない、というか考えてないからemacsとtypoしたらvimが起動するプログラムの方を検討。ただ、普段使ってるのはEmacsということで、vimとtypoとしたらemacsを起動するプログラム。emacsとtypoしたらvimが起動して怒られるプログラムをお願いします(いろんな人に怒られる)
— ヤン (@yangniao23) August 24, 2019
自分はsudo を suod と誤タイプする事が少しありますけど内容ガガガが
コード
package main import ( "log" "os/exec" "runtime" ) func main() { var cmdPointer *exec.Cmd switch runtime.GOOS { case "windows": cmdPointer = exec.Command("cmd", "/c", `C:\msys64\mingw64\bin\emacs.exe`) case "darwin": cmdPointer = exec.Command("open", "-a", "emacs") default: cmdPointer = exec.Command("emacs") } err := cmdPointer.Start() if err != nil { log.Fatal(err) } }
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)
$ go build vim.go $ ./vim $ GOOS='windows' go build vim.go $
WindowsはMSYS2でインストールしたEmacs。だから、環境や設定によってemacs.exeが場所が違うかも。
あと、実際に動作確認したOSはmacOS、Windowsのみ。一応、他のOS向けにswitch文のdefaultで設定しておいたけど、動くかどうかわ未確認。
当然、環境変数のPATHにビルドしたプログラムを置くと本当のvimが上書きされたり使えなくなってしまうから注意。
runtime.GOOSについては改訂2版 みんなのGo言語の第2章を参考にした。
1 コメント :
紹介してくださりありがとうございます!
コメントを投稿