5

vimを使用expandtabsして、行のテキストの左側にいる場合はオフにし、空白以外の文字の右側にいる場合はオンにします。(インデントにはタブを使用し、位置合わせにはスペースを使用したいと思います。)

これはできますか?

4

2 に答える 2

5

はい。スマート タブプラグインを使用します。

このスクリプトを使用すると、行頭に通常のタブ設定を使用し、それ以外の場所ではタブをスペースとして展開できます。これにより、「インデント」と「配置」が効果的に区別されます。

<tab> エディター タブ設定を使用して、行の先頭 (最初の非スペース文字の前) にタブを挿入し、それ以外の場合はスペースを挿入します。

<BS>エディターのタブ設定を使用して、smarttab でタブまたは「展開された」タブを削除します

Vim に関数の引数を整列させるには、以下を追加します。

set cindent
set cinoptions=(0,u0,U0

.vimrc。プラグインは空白を次のようにエンコードします。

int f(int x,
......int y) {
--->return g(x,
--->.........y);
}

これにより、" x" と " "の位置合わせがyタブのサイズに関係なく行われます ( tabstop)。

于 2009-07-20T07:00:41.990 に答える
4

次のようなものを試してください。

function! TabMaybeIndent()
    if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$'
        return "\<Tab>"
    else
        return "    "
    endif
endfunction

set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>
于 2009-07-20T02:31:14.403 に答える