vim中^M的研究


vim打開文件時在行尾顯示^M,這樣的情況時不時會遇到,下面稍微深入了解下這個問題;

原理呢,其實很簡單:Windows換行風格(也叫dos風格)的文本以Unix風格解析就會出現這個情況;

首先重現這個情況

在Windows用notepad創建一個文件a.txt,隨便寫點內容進去,然后拷貝到Linux;

此時在Linux中用vim打開是看不到^M的,因為在vim中可以看到fileformat是dos:

:set ff
    fileformat=dos

解析風格與原風格一致當然不會出現^M,思路呢就是把解析風格改為unix才能重現;

注意這里使用:set ff=unix是不行的,因為這個命令vim會自動把文本風格和解析風格同時改為unix;

實驗表明用>>,sed等外部修改命令就可以達到效果:

# echo end >> a.txt
# vim a.txt
:set ff
    fileformat=unix

在第一條命令執行后,用vim打開就可以看到^M了;

檢查這個問題

如果有很多文件想確認下是否存在這個問題,總不能一個個去vim打開查看吧,可以用下面兩個命令;

注意:Linux命令行的^M=ctrl+v,ctrl+m,就是按住ctrl然后依次單擊v和m即可;

# grep "^M" -lr .
# file `find -type f` | grep CRLF

解決這個問題

了解了原理其實解決起來就很簡單了;

在vim中解決單個文件:

:%s/^M$//g

批量解決:

# sed -i "s/^M//" `grep "^M" -lr .`

over


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM