スクリプトを実行しようとする^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-m
Windows では、^Mを入力するように^M を置き換えることができます。*nix では、dos2unix を使用してスクリプト ファイルを unix 形式に変換できます。