web-dev-qa-db-ja.com

vimの自動インデントが末尾のスペースを削除しないようにするにはどうすればよいですか?

一部のテキストエディタ(Kate、geditなど)では、自動インデントが有効になっている場合、returnキーを2回押すと、末尾に空白が残ります(これが必要です)。

if (code) {
....
....|
}

他の人は(空白行でも)末尾のスペースが許可されていないコーディング標準に対応しています:

if (code) {

....|
}

これについて私を悩ませているのは、自動インデント後に上向き矢印を押すと、自動インデントが失われることです。

if (code) {
|
....
}

Vimと:set autoindentを実行すると、後者の動作が発生します。

私の質問は、vimを設定して、末尾のスペースが使用されなくなった場合に自動的に削除するのではなく、保持するようにするにはどうすればよいですか?

7
Joey Adams

空の行でも正しいインデントを設定する方法については、vim wikiの このヒント を参照してください。前のインデントを保持したいだけの場合(正しいインデントとして計算されたvimを無視して)、同じwikiエントリの下のコメントで説明されているようにlet ind = indent(prevnonblank(v:lnum - 1))を使用します。

3

私は この解決策 私のために働くことがわかりました:

:inoremap <Return> <Space><BS><Return>

私の.vimrcでは:

" Change a blank line upon creation so that its leading spaces won't be removed
inoremap <Return> <Return><Space><BS>
nnoremap o o<Space><BS>
nnoremap O O<Space><BS>
0
Tom Hale