簡體   English   中英

^M 在 vi​​m 中每一行的末尾

[英]^M at the end of every line in vim

當我使用 vim 和其他編輯器編輯源文件時,有時會在行尾得到這些 ^M 字符。 我認為這與在 Windows 和 Linux 中編輯文件有關。 如何自動刪除所有這些?

作為命令,鍵入

:%s/^M$//

(要獲得 ^M,請按 ^V ^M,其中 ^ 在大多數鍵盤上是 CTRL)

去除 DOS 行結尾的一種簡單方法是使用ff選項:

:set ff=unix
:wq

現在你的文件又回到了老式的 Unix 方式。

如果您想添加DOS 行尾(為了讓打印機滿意,或者與沒有好工具的 Windows 朋友傳輸文件),您可以輕松地反方向:

:set ff=dos
:wq

你可以這樣做:

:set fileformats=dos

它將隱藏^M ,而不會觸及文件。

有一個名為dos2unix的程序可以為您刪除這些程序。 Windows 使用不同的行結束字符,這就是發生這種情況的原因。

這在一個包含所有內容的文件中對我有用:

首先查找所有匹配項

:%s/^M//

(要獲得^M ,請按 ^V ^M,其中 ^ 在大多數鍵盤上是Ctrl

然后用換行符替換

:%s//\r/g

組合命令將是:

:%s/^M/\r/g

在重新打開它們之前,我傾向於通過fromdos運行受影響的文件。 fromdostofrodos軟件包的一部分。

問題的根源可能是通過 FTP 傳輸。 當您通過 FTP 將這些文件從一個盒子傳輸到另一個盒子時,請確保使用 ASCII 傳輸。 使用命令“ASC”。

mcedit: shift+f2, 設置 unix 格式 (LF), ok

" put this in your ~/.vimrc file and :source ~/.vimrc
" then you can do: Dos2Unix
" dos2unix ^M
fun! Dos2unixFunction()
    let _s=@/
    let l = line(".")
    let c = col(".")
    try
        set ff=unix
        w!
        "%s/\%x0d$//e
    catch /E32:/
        echo "Sorry, first save the file."
    endtry
    let @/=_s
    call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM