QA@IT

vimの:{range}!{filter}でkeepjumpsできない

1565 PV

Blackrush/vim-gocode というvimのプラグインで困っています。

このプラグインを入れると、BufWritePreでgofmtが実行されるようになるんですが、
gofmtでフィルタ処理したときにカーソルがファイルの先頭に移動します。

前後でwinsaveview()してwinrestview()しているためファイル保存の前後でカーソルの位置は変わらないのですが、
フィルタ処理でファイルの先頭に移動したものがchangelistに入るため、
ファイルを保存した直後にundoをすると必ずファイルの先頭に移動してしまいます。

これが非常に不便で困っており、

-    silent execute "%!" . g:gofmt_command
+    silent keepjumps execute "%!" . g:gofmt_command

としてみたのですが挙動が変わらず困っています。
changelistを変更せずexecute "%!gofmt"するにはどうすればよいでしょうか。

ウォッチ

この質問への回答やコメントをメールでお知らせします。