1

スクリプトを実行しようとする^Mと、無効な文字が表示されますが、Vim では$入力時に表示されます:set list

試し:%s/^V^M//gましたが、^Mパターンが見つかりませんと表示されます

これは、ここ.vimrcで見つけた行末文字を$

これを理解せずに、私の唯一のオプションは、スクリプトを再入力することです。

4

4 に答える 4

3

スクリプトには一貫して^M行末があるようで、 fileformat=dos. :setlocal fileformat?教えてくれます。

このファイルを Unix (LF) の行末に変換するには、:setlocal fileformat=unix:write、またはこれを で結合し:w ++ff=unixます。

Vim にそのようなファイルを検出させたくない場合 (^M代わりに を表示したい場合) は、:set fileformats-=dos自分のファイルに追加~/.vimrc(または既存の構成を編集) します。

于 2013-10-02T15:43:34.727 に答える
2

se nolistドル記号が消えます。

OS に関係なく、テキストには常に行末があります。

行末は空白であり、常に存在しますが、通常は表示されません。

于 2013-10-02T15:42:53.100 に答える
0

ファイルを開いた後^M、行末に表示されませんが、ソースを取得しようとすると、vim が^Mさまざまな場所で不平を言う場合はw ++ff=unix、このファイルを再度開くだけです。

ファイルを開くと、vim は行末の形式を検出します。したがって、置換しようとしても機能し^Mません。検出されたすべての行末は、内部文字列 end に変換されます。たとえば、ファイル形式があなたの場合のような dos の場合、次のようになります

set nocompatible\r\nset ignorecase\r\n...

(ここで、\rはキャリッジ リターンであり、^M、 、\nは改行文字、\r\nシーケンスは dos 行末です)。ファイル形式がunixの場合は次のようになります

set nocompatible\nset ignorecase\n...

. Macの場合は次のようになります

set nocompatible\rset ignorecase\r...

. しかし、vim が行末を正しく検出した場合、これらすべてのファイルは次のように変換されます。

"set nocompatible"
"set ignorecase"
"..."

バッファを表す内部構造の C 文字列。各文字列は 1 行を表します。いいえ\r、ありません\n

実行すると、:wファイルは一連のバイトに変換されます。:w ++ff=unix行末を強制します。この場合、設定は変更されないため、再度開く必要があります。fileformatしたがって、次のwなしで++ffは、DOS 行末で再度保存されます。再度開くと、改行が再検出され、fileformat設定が再割り当てされます。の後に:set fileformat=unix手動で行うこともできますが、入力する方がはるかに高速です。:w ++ff=unix:e

于 2013-10-02T15:54:55.457 に答える
0

Windows または *nix を使用していますか?

ctlr-q ctrl-mWindows では、^Mを入力するように^M を置き換えることができます。*nix では、dos2unix を使用してスクリプト ファイルを unix 形式に変換できます。

于 2013-10-02T15:34:39.357 に答える