2

データ(cvsなど)を含み、タブでフォーマットされたテキストファイルがありますが、列のサイズがすべて同じではありません。

vimのデフォルトのフォーマットは次のとおりです。

int1    longvalue1       string1
int2    anotherlongvalue2       string2

vimは異なる列に異なるタブストップを使用できますか?表示は

int1  longvalue1         string1
int2  anotherlongvalue2  string2
4

2 に答える 2

4

この機能(エディターによって自動的に実行される場合)は、一般にElasticタブストップと呼ばれます。このようなパッチはVimに含めるためにフロートされていますが(たとえば、ここを参照)、Vimに含まれるにはほど遠いです(そしてほとんど進歩はありません)。

:set ts回避策として、大きな値にするか(ただし、大きなギャップが発生します) 、Align-テキスト、eqns、宣言、テーブルなどを整列させるためのプラグインまたはTabular-変換するためのテキストフィルタリングと整列のためのVimスクリプトを使用できます。タブを適切な量の空白に変更します(一時的に、に変換し直します:write)。

于 2013-03-12T09:35:17.763 に答える
1

Ingoに感謝します。プラグインAlignは私が必要としているものです。シンボルを置き換えたいのですが<tab>、プラグインはこれらの境界を置き換えません(通常の境界は=置き換えられるべきであり、置き換えられるべきではありません)。

したがって、それらを置き換える関数を作成しました。

" :DoAlign command to format the text as an array by replacing the <tabs>.
" Requires the Align-plugin
fun! DoAlignFunction()
 %s#\t#==motiv==#g
 %Align
 %s#==motiv==##g
endfunction

command! DoAlign call DoAlignFunction()

したがって、(テキストを選択せず​​に)すべてのタブを次のように置き換えることができます:DoAlign

于 2013-03-13T10:21:35.820 に答える