![](/img/trans.png)
[英]Vim (7.3.3 Windows 64bit): Add ^M to end of line if there is none (ff=unix)
[英]^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
運行受影響的文件。 fromdos
是tofrodos軟件包的一部分。
問題的根源可能是通過 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.