vim刪除^M
1.進入命令模式。vim的命令模式,就是在編輯模式下輸入":",光標就會跳到屏幕最后一行,並在那里顯示冒號,此時就已經進入命令模式。
命令模式的內容均顯示在屏幕的最后一行,按下回車鍵,vim執行命令。
2.在命令模式下輸入下列字符:輸入:%s/^M$//g
3.回車。即會自動刪除該文件中的所有 ^M 字符。
刪除行尾空格的命令: :%s/\s\+$//
這句命令到底是什么意思呢?% 指匹配整個文件,s 是置換的意思,^M 注意要用 Ctrl + V Ctrl + M 來輸入,M 后面的 $ 代表匹配行尾的內容,最后的 g 則表示每行中匹配到的內容都要置換。理解了命令的含義,就好變通使用了,比如說,要將某個文件中的 Vim 全部替換成 VIM,則可以使用這樣的命令::%s/Vim/VIM/g。
有兩種情況,會出現打開的文件都顯示^M符號:
1. vim被配置為fileformat=unix,而你打開的文件都是dos格式的。unix格式的換行符為0A(ascii碼)也就是<LF>,dos格式的換行符為 0D 0A(也就是<CR><LF>),<CR>其實就顯示為^M。下面是詳細講解:
DOS, Mac 和Unix格式的文件
回想計算機的史前史,那時的打字機使用兩個字符來開始一個新行。
首先是一個字符命令使打印頭移回開始位置(回車,<CR>),然后另一個字
符命令控制向前進紙一行(進紙,<LF>).
在計算機誕生之初,存儲設備十分昂貴。於是有人就提出沒有必要
用兩個字符來表示一行的結束。UNIX一族決定只用進紙一個字符<Line
Feed>來表示行尾。來自蘋果陣營的人則把回車<CR>作為換行的標
准。MS-DOS(和微軟的Windows)仍然決定沿用古老的回車換行<CR><LF>傳
統。
這也意味着如果把文件從一個系統移到另一個不同的系統,你就會遇
到與換行相關的問題。Vim編輯器則可以識別這些不同格式的文件。
你可以在'fileformats'選項里指定你希望Vim能自動識別的格式的集
合。下面的這個命令就可以讓Vim能自動識別UNIX格式和MS-DOS格式:
:set fileformats=unix,dos
把這句話放在_vimrc中,一般情況就都能OK。
2. 你的文本中既有unix的換行符,又有dos的換行符,那么vim會認為你打開的是unix的,所以,那些dos的換行符就會出現惱人的^M。不過這種情況不常見。辦法是:
1)若你的vim版本大於7.1,並想用dos顯示和保存,如下語句:
:e ++ff=dos
2)若你的vim版本小於等於7.1,又想把文章按照dos格式顯示和保存,如下語句:
:set ff=dos
:%s/\r\+$//e
3)若你的vim版本小於等於7.1,又想把文章按照unix格式顯示和保存,如下語句:
:set ff=unix
:%s/\r\+$//e
如何把 ^M 去掉
在linux上經常遇到這種問題,從網上下載文件到 linux 上后,就多了很多 ^M這種東西,如何集體刪除這種東西呢!
(1)方法一
最簡單的辦法就是用里linux下vim行的替換文法:
進入vim的命令行模式輸入
:%s/\r//gc
同理:如果出現^V則用:%s/^V//gc替換
(2)方法二
也是在vim命令行模式下
:set ff=unix
:w
先把格式換成unix的,然后重新保存以下就可以了!
(3)方法三
用一個工具dos2unix(注意:不同系統不一樣 ) ,例如我使用的是ubuntu,其下有一個替代工具tofrodos,具體安裝可以參考我的另一篇文章
http://www.cnblogs.com/xiaofengkang/archive/2012/12/06/2805642.html
使用:
將DOS格式文本文件轉換成Unix格式,最簡單的用法就是dos2unix直接跟上文件名。
格式:dos2unix file
如果一次轉換多個文件,把這些文件名直接跟在dos2unix之后。(注:也可以加上-o參數,也可以不加,效果一樣)
格式:dos2unix file1 file2 file3
格式:dos2unix -o file1 file2 file3
上面在轉換時,都會直接在原來的文件上修改,如果想把轉換的結果保存在別的文件,而源文件不變,則可以使用-n參數。
格式:dos2unix oldfile newfile
如果要保持文件時間戳不變,加上-k參數。所以上面幾條命令都是可以加上-k參數來保持文件時間戳的。
格式:dos2unix -k file
格式:dos2unix -k file1 file2 file3
格式:dos2unix -k -o file1 file2 file3
格式:dos2unix -k -n oldfile newfile
注:unix2dos命令的使用方式與dos2unix命令的類似。
