web-dev-qa-db-ja.com

viでコード(中括弧、括弧など)をどのように揃えますか?

Viでコードをどのようにかっこいい/揃える/フォーマットするのですか?コマンドとは?

私は大量のコードを貼り付けましたが、それをすべてフォーマット/整列させる必要があります...明らかに私はvi初心者です。

バツ

28
Xofo

私の回答のこれらのコマンドはvimで機能します。 viを使用していると思うほとんどの人はvimを使用しています。 「vi」が本当に「vim」かどうかを確認するには、viを開いて「:version」と入力します。vimの場合は、そのように表示されます。そうしないと、プログラムの名前なしでバージョン番号が表示されるだけです。また、初めてvimを開くと、通常、「VIM-VI iMproved」というスプラッシュ画面が表示されます...

自動インデント

自動インデントをオンにするには、vimが編集中のファイルタイプを認識していることを確認します(通常、これはファイル名拡張子から自動的に検出されますが、一部のファイルタイプでは認識されない場合があります)。構文の強調表示のメニューを使用して、ファイルタイプを指定できます。次に、これを行います:

:filetype indent on

あなたは自動インデントを無効にすることができます

:filetype indent off

インデントの自動調整/修正

一般に、={motion}は、コードをインデントレベルに揃えます。

  • ==現在の行を揃えます
  • =i{内部ブロックを揃えます
  • =%カーソルの下の対応する括弧/括弧に揃えます
  • =14jまたは14==次を整列14ライン
  • =Gファイルの最後に揃えます
  • vG=同じこと、ファイルの最後に揃えます(ただし、ビジュアルモードを使用します)
  • vjjj=4行を揃えます(ビジュアルモードを使用)

手動インデント

Vimがインデントレベルを正しく推測していない場合、それを変更するには2つの方法があります。

  • 通常モード(すべてがコマンドである)の場合、<<を実行して行を左にシフトするか、>>タブを1つ右にシフトします。これは、上記で示したのと同じ移動コマンドを使用して、数行で実行できます(たとえば、>i{は、現在の内部コードブロックをインデントします)。
  • 挿入モードの場合は、Ctrl-Tを実行するか、1つのタブのインデントを解除することで、(カーソルを移動せずに)行をさらにインデントできますありCtrl-D

等号の整列など

宣言のリストで等号を揃えたい場合は、次のvimスクリプトの使用を検討してください: http://www.vim.org/scripts/script.php?script_id=294

インデント/タブサイズの調整

インデント時にvimでタブではなくスペースを使用する場合は、このコマンドを実行します(またはvimrcファイルに追加することを検討してください)。

 :set expandtab

タブに相当するスペースの数を設定するには、通常これを行います:

 :set expandtab softtabstop=3 tabstop=3 shiftwidth=3
  • tabstop-タブがカウントする列数(既存のタブ文字の表示に影響します)
  • shiftwidth-他のコマンドの中でも特に、<<と>>で再インデントのサイズを制御します。
  • softtabstop-タブキーを押したときに挿入するスペースの量
  • expandtab-タブキーをスペースに展開する

ただし、さまざまな量のタブを頻繁に操作する必要がある場合は、この関数とキーバインドを使用することもできます。

function! Ktabs(tabsize)
    execute "set softtabstop=" . a:tabsize . " tabstop=" . a:tabsize . " expandtab shiftwidth=" . a:tabsize
    "set softtabstop=a:tabsize tabstop=a:tabsize expandtab shiftwidth=a:tabsize
endfunction
noremap <leader><Tab> :call Ktabs(3)<Left>

タブとスペースが混在するファイルを編集している場合は、タブサイズを設定した後でこのコマンドを使用できます。

:retab
45

={motion}

:h =

追伸vimが利用可能な場合は、viを使用しないでください。

5
wRAR

インデントを手動で調整する場合は、インデントしたい最初または最後の行でVを使用してビジュアルブロックを開き、ブロックを含むブレースに移動し、%を使用して他のブレースに移動してからシフトします>または<の行

インデントが大きくずれている場合は、<を使用してすべてを左にシフトし、.を使用してそれを繰り返してから、すべてをインデントし直します。

別の解決策は、 で説明されているようにunix fmtコマンドを使用することです。Vimの問題は、viを操作しないことです。{!}fmt

4
Winder