Vimでソースコードを再インデントするためのキーマップ

Vimでソースコードを再インデントするためのキーマップ

マイキーマッピング~/.vimrc編集したソースコードのファイルを動的にインデントします。次のようになります。

" press F4 to fix indentation in whole file; overwrites marker 'q' position
noremap <F4> mqggVG=`qzz
inoremap <F4> <Esc>mqggVG=`qzza

簡単な説明:

mq      place marker 'q' at cursor position
ggVG    select all text
=       re-indnet text
`q      return cursor back to position stored in 'q' marker
zz      center the display over the cursor
a       return to insert mode if called from it

基本的には動作しますが、2つの欠点があります。

最初はカバーするということです。キュー表示。このタグを使用してカーソル位置を保存します。私は選ぶキューなぜなら、私はこの手紙をマーカーとして使うようには思えないからです。それでも壊れずにこれを達成するためのより賢い方法はありますか?キュー表示?

2番目は、挿入モードでカーソルが行の先頭にあるときに発生します。この場合、F4期待どおりにカーソルが再インデントされますが、カーソルも右に1つ移動します。<C-o>代わりにを使って修正してみましたが、エディタでのみ機能している<Esc>ようです。<C-o>:注文する、コマンドを移動しません。どうすれば解決できますか?

ベストアンサー1

m'最後のジャンプマーカー()を一時マーカーとして使用できます。挿入モード(ivs。)を再開するために他のコマンドを使用したくない場合は、最後に終了した時点で挿入モードを再開する次のaコマンドを使用できます。gi

inoremap <F4> <Esc>m'ggVG=``zzgi

おすすめ記事