web-dev-qa-db-ja.com

vimにすべての行を単一の改行文字(LF)で終了させる方法

タイトルが示すように、vim(私の場合はgVim)ですべての行を単一の改行文字(LF)で終了する必要があります。これどうやってするの?

PHPコーディング、具体的には http://framework.zend.com/manual/en/coding-standard.php-file-formatting)の標準に従おうとしています。 html#coding-standard.php-file-formatting.line-termination

5
Mariano Avopa

簡単な答えは、Vimでファイルを開き、「:set fileformat=unix」と入力して、ファイルを書き込むことです。その時点から、VimはファイルをUnixファイル形式として扱い、carriage-return + newlineの代わりに改行文字のみを使用する必要があります。

長い答えは、Vimでファイルを開くと、ほとんどの行の終わりに実際の^ M文字が表示されるため、これが機能しない場合があるということです。この場合、次の2つの理由が考えられます。

  1. 最も可能性が高いのは、元々DOSファイル形式で保存された後、変換なしでUnix形式として処理できると想定し、DOS行末なしで数行残った別のエディターによって「損傷」したことです。この場合、:%s/\%x0d$//gのようなことをしてから書く必要があります。
  2. このファイルは適切なDOSファイル形式ですが、Vimはこの事実を認識していません。これはおそらく、「fileformats」オプションが正しく設定されていないことを意味します。これについて詳しくは、「:help 'fileformats'」を参照してください(一重引用符はヘルプコマンドの一部です)。

最後に、WindowsマシンでVimを使用している場合は、~/_vimrcで前述の「fileformats」オプションを「dos、unix」に設定されているデフォルトの「dos、unix」ではなく「unix、dos」に変更する必要があります。 DOS/Windows環境。これにより、VimはDOS形式ではなくUnix形式で新しいバッファを作成します。 (繰り返しになりますが、詳細についてはヘルプを参照してください。)

6
Heptite

Heptiteは正しく、PHPファイルを編集するたびにこの設定を自動的に行うには、~/_vimrcファイルに以下を追加できます。

au BufRead,BufNewFile *.php set fileformat=unix

これは、ファイルをバッファに読み込むか、パターン「* .php」に一致するファイル名を持つ新しいバッファを作成し、Heptiteの回答に従って、ファイル形式を「unix」に設定するたびに実行される自動コマンドです。

4
tonyk