スクリプトを実行しようとする^Mと、無効な文字が表示されますが、Vim では$入力時に表示されます:set list
試し:%s/^V^M//gましたが、^Mパターンが見つかりませんと表示されます
これは、ここ.vimrcで見つけた行末文字を$
これを理解せずに、私の唯一のオプションは、スクリプトを再入力することです。
スクリプトには一貫して^M行末があるようで、 fileformat=dos. :setlocal fileformat?教えてくれます。
このファイルを Unix (LF) の行末に変換するには、:setlocal fileformat=unixと:write、またはこれを で結合し:w ++ff=unixます。
Vim にそのようなファイルを検出させたくない場合 (^M代わりに を表示したい場合) は、:set fileformats-=dos自分のファイルに追加~/.vimrc(または既存の構成を編集) します。
se nolistドル記号が消えます。
OS に関係なく、テキストには常に行末があります。
行末は空白であり、常に存在しますが、通常は表示されません。
ファイルを開いた後^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
Windows または *nix を使用していますか?
ctlr-q ctrl-mWindows では、^Mを入力するように^M を置き換えることができます。*nix では、dos2unix を使用してスクリプト ファイルを unix 形式に変換できます。