ですから、私の状況では、自分のマシンで開発を開始したファイルmyfile.py(pythonで記述)があります。私はこれを行うためにvimを使用しましたが、当時、Vimでタブの長さを定義したり、マーカーを使用して行がタブされた回数を表示したりできることを知りませんでした。
したがって、myfile.pyをリモートのUNIXサーバーにSCPで送信し、そこで作業を開始する前は、すべてのタブは約それぞれ長さ6スペースであり、インデントの数を定義するマーキングはありませんでした。特定の行で。でも6スペース多いので本当に必要ありませんでした...
しかし、リモートサーバーで開発を始めたとき、vim構成にタブがあり、約それぞれ長さが4スペースであり、そこにあることに気付きました。 )wouldは、タブが存在することを示す垂直方向のマーキングです。ただし、myfile.pyに既に存在するコード行をタブ設定に合わせて自動的に変更することはなく、設定は、vimを使用して記述した新しいコード行にのみ適用されることになりました彼らのサーバー。
私は初心者なので、ファイルの一貫性を保つために何も修正する必要はありませんでした。今私はいくつかの行には長さが4のタブがあり、他の行には6のタブがある奇妙なインターリーブ混合物そして短いものには各タブの垂直マークがあり、長いものには何もありません。
この混乱を効率的に修正してone標準に戻すにはどうすればよいですか? (うまくいけば、タブの長さが短いものwith垂直マーキング)。私はこの窮状に関して遠い経験さえ持っている人を探しています-これが私に上級レベルでより多くのvimを学ぶようにさせるか、または最初にいくつかの回り道から始めるかどうか、私は気にしません。私は各行を手動で修正するよりも何でも好きです-あなたが扱っているときにあなたのコードがどれほど間違っているか知っていますPython!
[編集]->また、各行には同じ数のタブがないことに注意する必要があると思いました...一部の行には0、1、4、5などがあります...
Vimのインデントは少し毛むくじゃらになることがあります。
expandtab オプションを使用してタブキーを押したときに、タブ文字を挿入するか、いくつかのスペースを挿入するようにvimを構成できます。 tabstop オプションを使用して、タブの幅(タブが占めるスペースの数)を構成することもできます。最後に、 listchars オプションを使用して特殊文字でタブを表示するようにvimを構成することもできます(▸が一般的な選択です)。ただし、タブの代わりにスペースが使用されている場合、その文字は表示されません。そのため、一部のタブには特殊文字があり、一部にはありません。一部は実際のタブ文字であり、その他はタブのように機能する多くのスペースです。
リモートUNIXサーバーがexpandtab
をオンにしてtabstop
を6に設定して構成されているようです。したがって、タブに入ると6つのスペースが出力されますが、開発サーバーは構成されているようです。 noexpandtab
およびtabstop
を4に設定します。
これを修正するには、vimの検索/置換機能を使用して、コマンド:%s/ \{6}/\t/g
を使用して、出現する6つのスペースをすべて1つのタブに置き換えます。そのコマンドを理解するには、vimの検索および置換機能を確認する必要があります ここ 。今後これが発生しないようにするには、独自の.vimrc
ファイルを作成して、好きなように設定し、ホームディレクトリに配置して自動的に読み込まれるようにするか、:source
ファイルを作成する必要があります。ファイルを編集します。
注: shiftwidth や softtabstop などの他のタブオプションもありますが、これらは問題とはあまり関係がありません。ただし、vimを構成して希望どおりに動作できるように、これらについて読む必要があります。
:set ts=6 et
#!/usr/bin/env python
def fun():
······print "hello, world"
:set noet
:ret!
#!/usr/bin/env python
def fun():
»·····print "hello, world"
:set ts=4
#!/usr/bin/env python
def fun():
»···print "hello, world"
:set et
:ret!
#!/usr/bin/env python
def fun():
····print "hello, world"
どうするか。両方のマシンの.vimrc
で、最も好みに応じてタブを設定します。
タブがカウントするスペースの数
set tabstop=4
(自動)インデントに使用されるスペースの数
set shiftwidth=4
タブをスペースに拡張する場合
set expandtab
か否か
set noexpandtab
インデントがめちゃくちゃになっているファイルを開くたび。ページの最初に移動します gg ページの最後まで自動インデントします =G