9

最近、大学院レベルのプロジェクトで Vim を使い始めました。私が直面する主な問題は、インデントされていないコードをチェックインすることがあるということです。どうにかして auto-indent+save+close のショートカットを作成できれば、問題は解決するはずです。

私の .vimrc ファイル:

set expandtab
set tabstop=2
set shiftwidth=2
set softtabstop=2
set pastetoggle=<F2>
syntax on
filetype indent plugin on

このようなコマンド ショートカットを作成して:x(保存 + 終了) でオーバーライドする方法はありますか。

私にお知らせください。

4

3 に答える 3

17

以下を に追加します.vimrc

" Restore cursor position, window position, and last search after running a
" command.
function! Preserve(command)
  " Save the last search.
  let search = @/

  " Save the current cursor position.
  let cursor_position = getpos('.')

  " Save the current window position.
  normal! H
  let window_position = getpos('.')
  call setpos('.', cursor_position)

  " Execute the command.
  execute a:command

  " Restore the last search.
  let @/ = search

  " Restore the previous window position.
  call setpos('.', window_position)
  normal! zt

  " Restore the previous cursor position.
  call setpos('.', cursor_position)
endfunction

" Re-indent the whole buffer.
function! Indent()
  call Preserve('normal gg=G')
endfunction

保存時にすべてのファイル タイプを自動インデントしたい場合は、このフックを に追加することを強くお勧め.vimrcします。

" Indent on save hook
autocmd BufWritePre <buffer> call Indent()

保存時に特定のファイル タイプのみを自動インデントする場合、手順に従ってください。保存時に C++ ファイルを自動インデントしたい場合は、次の~/.vim/after/ftplugin/cpp.vimフックを作成して配置します。

" Indent on save hook
autocmd BufWritePre <buffer> call Indent()

~/.vim/after/ftplugin/java.vimJava などの他のファイル タイプについても同様です。

于 2013-04-14T00:14:34.080 に答える
2

既に存在するファイルをインデントするには、特に... 行を使用しているため、ショートカットを使用できますgg=G(コマンドではありません。2g回押してから=、次に)。Shift+gfiletype indent

Vim: gg=G は左揃え、自動インデントなし

于 2013-04-14T03:39:52.927 に答える