実現したいこと
Go言語を使って外部プログラムを起動して、ファイルを修正する方法はありますか?
具体的には、Vimで指定されたファイルを読み取り、Vim上に表示されている文字列を置換したいです。
例えば、text.txtが以下のような場合
txt
1Hello
Go言語からVimを使って読み込まれたファイルを修正したいです。
現状で試したこと
Qiitaなどで調査して、ソースコード書いてみましたが意図した動作になりません。
go
1 vimCmd := exec.Command("vim", "text.txt") 2 vimStdout, _ := vimCmd.StdoutPipe() 3 vimStderr, _ := vimCmd.StderrPipe() 4 vimCmd.Start() 5 /* 以下3行は有効にするとvimエディタが起動(例外で落ちる) */ 6 //vimCmd.Stdin = os.Stdin 7 //vimCmd.Stdout = os.Stdout 8 //vimCmd.Stderr = os.Stderr 9 go func() { 10 scannerOut := bufio.NewScanner(vimStdout) 11 scannerErr := bufio.NewScanner(vimStderr) 12 for scannerOut.Scan() { 13 for scannerErr.Scan() { 14 lineErr := scannerErr.Text() 15 fmt.Println("[stdErr] ", lineErr) 16 } 17 lineOut := scannerOut.Text() 18 fmt.Println("[output] ", lineOut) 19 } 20 }() 21 vimCmd.Wait() 22
bash
1[stdErr] Vim: 警告: 端末への出力ではありません 2[stdErr] Vim: 警告: 端末からの入力ではありません
聞きたいこと
- Go言語を使って書きたいという要望がありますが、そもそも不可能なことですか?
- 実現する方法があればヒントだけでもいいのでアドバイスを頂きたいです
結局何をしたいのかというと
Gitのリベース処理を自動化するコマンドを作りたいです。
細かいコミットが重なったために、リベースでSquashしようとすると以下のようなコマンドを実行して、
bash
1git rebase -i HEAD~3
すると、git-rebase-todoがエディタで立ち上がると思います。
しかし、その都度エディタが立ち上がり対象のコミットに対してsquashに書き換えるのが面倒です。
そこをコマンドでサクっと修正できるようにしたいと考えています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/04 06:14