Vim 中如何去掉 ^M 字元?
windows環境下用Vim打開文件後出現好多^M字元,什麼原因,怎麼去掉?
刪除行尾的^M:%s/
//g
基於 DOS/Windows 的文本文件在每一行末尾有一個 CR(回車)和 LF(換行),而 UNIX 文本只有一個換行,即win每行結尾為
,而linux只有一個
但如里批量去除的話就不能用vi了,
方法1: 用dos2unix工具,
把win文檔轉換成linux下文檔命令:find ./ -type f -print0 | xargs -0 dos2unix如果想把linux下的文檔轉換成win下的:
find ./ -type f -print0 | xargs -0 unix2dos方法2: 用sed命令
把win文檔轉換成linux下文檔:find ./ -type f print0 | xargs -0 sed -i "s/^M$//"把linux下的文檔轉換成win下的
fild ./ -type f print0 | xargs -0 sed -i "s/$/^M/"google搜索"Vim 中如何去掉 ^M 字元"結果前兩個
刪除文件中的 ^M 字元Windows Linux 文件格式之迷 &< VI下刪除文本中的^M&>用vim打開那些在win編輯過的文檔的時候,我一般都先
:set ff=unix
這樣那個^M的問題也順帶解決了 // ..
遇到這種結尾符號可以設置編輯器的換行風格,比如上圖,這樣再用 vim 打開就不會有問題了。
vim下 :%s/^M//g 或者 :1,$s/^M//g 均可
補充一點:
^M是使用 "CTRL-V CTRL-M" 而不是字面上的 ^M不用在vim裡面去啊,直接在終端敲命令就好了。$ fromdos filename
dos2unix
dos2unix filename
曾經因為這個找了很久的BUG(當時用的hive調python程序的時候碰到這個問題會報一個很奇怪的錯誤),具體的解決方法網上能搜出來很多,其他回答也都給出了答案,主要是想提醒一個深刻的教訓:
遇到windows下的程序在linux下出現問題,一定記得cat -A 看一下源文件,或者提前設置好windows下IDE裡面的換行符,再或者直接vim來寫
^M可以通過Ctrl+v,Ctrl+m按出來,sed替換也可以啊。
把這兩行放到vimrc里,以後打開文件看到^M直接按一下F2,如果快捷鍵有衝突你也可以改成別的。
inoremap &
//g&
nnoremap &
//g&
dos2unix 方便,快速,好用
不僅vim打開有,emacs也有,所以是寫文件的問題-==-比如,fprintf(wp,"pos1-exclsats =%s # (prn ...)
", sal);這句話完全沒問題,但是生成的文件都有那個符號。如果寫成fprintf(wp,"pos1-exclsats =%s # (prn ...)
", sal);就ok轉1.回車換行符,是2個符。一個回車,一個換行。
僅僅是回車,
是換行。一個是控制屏幕或者從鍵盤的Enter鍵輸入。另一個是控制「印表機」!
2.回車 = 游標到達最左側,換行 = 移到下一行。如果只回車,列印的東西會覆蓋同行以前的內容,如果只換行,列印的東西會在下一行的先一個位置繼續。
3.實際是回到行首。
如果下一行已經有了一些內容的話它會在那些內容的後邊.因為一般情況下下一行是沒有數據的,很多時候
也就成了
作用一樣。
替換命令就可以了,輸入^M的時候按住ctrl鍵不放,依次按下v和m如全文替換為空(沒有):1,$s/^M//g
推薦閱讀:
※如何通過vim快捷鍵瀏覽知乎及其他網站 ?
※你為了真正做到使用vim提高效率,花了多長時間學習和練習?
※為什麼vim只支持等寬字體?
※哪兩個字母不可能連在一起?
※Vim和Emacs哪個用戶數量更多?
TAG:Vim |