ファイルモードが明示的に DOS の場合でも gVim でキャリッジリターン (^M) が表示される

StackOverflow https://stackoverflow.com/questions/799417

質問

Windows で gVim を使用しています。私のコードが示しているのは ^M 行末の文字。私が使用した :set ff=dos 無駄に。の ^M 既存の行には文字が残りますが、入力した改行には表示されません。モードを Mac に切り替えました (ショー ^J 文字) および unix (も表示されます) ^M 文字)、そして dos に戻ります。他にこれを見た人はいますか?

役に立ちましたか?

解決

あなたは、Windowsの行末とUnixのものの混合物を持っている場合、

これが起こります。あなたは100行を持っている場合は、99をrを\ n \され、1つは、\ nをされて、あなたは99 ^ Mの文字が表示されます。修正は、1つの行を見つけて、それを交換することです。またはファイルにDOS2UNIX実行します。あなたがして、Windowsの行末を置き換えることができます:

:%s/\r\(\n\)/\1/g

他のヒント

また、実行することができます:

:e ++ff=dos

^Mを削除するには、次のファイル形式を参照してください - Vimのヒントウィキ

私は通常私の行末のクリーンアップに次の使用します

:g/^M$/s///

CTRL-Mを取得するには、私は通常し、Ctrl-M、CTRL-Qを入力し、それが中にそれを置く。(一部の環境では、それは、CTRL-Vかもしれし、Ctrl-M。)私はなぜ知らないが、私は<のhref = "https://stackoverflow.com/questions/799417/gvim-showing-carriage-return-m-even-when-file-mode-is-explicitly-dos/799433よりも覚えるのが1を簡単に見つけること#799433" > RQ ののます。

同様:set ff=dosを行うことを忘れてはいけない、またはあなたがまだUNIXの行末を節約しまいます。

私は、これはすでに回答されているけど、私が使用トリックがある。

:%s/\r/\r/g

これは、Windows CRLFとUNIXの改行を置き換えます。ただ、誰にも問題があった場合に追加しました。

あなたはこれらの文字を無視することができます!

あなたのvimrcにこれを置く

  

試合無視/ \ R $ /

実際に私にとってうまくいったのは(64ビットWindows、gVIM:7.2 ) は次のとおりです。

:set ffs=dos

だけでなく:ff

のWindows 7上のVim 7.3を実行している私は、次のコマンドを使用します:

:%s/^M/\r/g

私はCTRL + Qで入力した^ Mを作成するには、次にCTRL + Mます。

これはおそらく、あなたの多くのために少しシンプルですが、オフのチャンスにそれは便利です。

richqの回答に基づいて、私はこれらが私のvimrcに有用であることが判明しました。それがマッピングされた元コマンドの場合Vimは動作するように、別のキーストロークを待つことになるので、それは混乱ビットDDなりますのでご注意、二つ目は、通常はコメントアウトされています。

function! D2u()
    execute '%s/\r\(\n\)/\1/g'
endfunction
"map d2u :%s/\r\(\n\)/\1/g

まず元と編集モードでcall D2u()を押して、第二にD2uを入力することによって実行されます。

これらは混合UNIX / DOSシステム上のファイルを使用したため、通常の余分なCRの行末があります。

最短各ラインの端から単一^ Mを除去するための答え、と私は使用可能な、次のとおりです。

:%s/\r

これに相当します:

:%s/\r//

が、最後のスラッシュが必要とされていません(彼らが想定している)。

は、多くのことを試みたが、次のよう加工した。

:%s/\r/\r/g

注:のG を使用しますが、ファイル全体に影響をしたい場合は、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top