兄弟们好,请问怎样把一个(从windows里面过来的),后面的^M 给去掉?

Vim、Emacs配置和使用
liaojp
帖子: 15
注册时间: 2006-06-15 20:42
送出感谢: 0
接收感谢: 0

兄弟们好,请问怎样把一个(从windows里面过来的),后面的^M 给去掉?

#1

帖子 liaojp » 2006-09-26 8:37

兄弟们好,请问怎样把一个程序从windows里面过来的,后面的^M 给去掉?
谢谢
头像
xiehuoli
帖子: 5941
注册时间: 2006-06-10 8:43
来自: 中国 CS
送出感谢: 0
接收感谢: 2 次

#2

帖子 xiehuoli » 2006-09-26 9:27

看不懂
年轻没有失败! ! ! ! ! !
噢!有怪兽,有怪兽!
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
送出感谢: 0
接收感谢: 2 次
联系:

#3

帖子 dbzhang800 » 2006-09-26 10:40

看不懂你说的啥意思,能不能说详细一点
liaojp
帖子: 15
注册时间: 2006-06-15 20:42
送出感谢: 0
接收感谢: 0

#4

帖子 liaojp » 2006-09-26 13:40

xie谢谢我已经解决了
tong0711
帖子: 31
注册时间: 2006-09-07 10:27
送出感谢: 0
接收感谢: 0

#5

帖子 tong0711 » 2006-09-26 13:42

dos格式到unix格式吧 在linuxforum上有个帖子上有解决方案 脚本 用elisp实现
就是这个

;; convert text files between unix and dos
(defun dos-unix () (interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))
(defun unix-dos () (interactive)
(goto-char (point-min))
(while (search-forward "\n" nil t) (replace-match "\r\n")))

定义了两个命令unix-dos dos-unix
poet
帖子: 2841
注册时间: 2006-09-11 22:47
送出感谢: 0
接收感谢: 4 次

#6

帖子 poet » 2006-09-26 19:18

dos2unix 或者 unix2dos 似乎不一定能很好处理不同的换行方式在不同的行中混排的情形,或者 ^M 悬空的情形。这个问题用 vi 解决其实就很踏实了。

如果只是一个文件,那么在 vi 中打开,然后 :%s/^M//g 就可以了。注意那个^M要用 (C-V,C-M) 的方式输入。

如果是多个文件,我习惯是做一个 shell 脚本实现。
头像
luddy
帖子: 59
注册时间: 2005-12-26 1:31
送出感谢: 0
接收感谢: 0

#7

帖子 luddy » 2006-10-23 11:59

查找替换不行吗?
kliz
帖子: 36
注册时间: 2006-10-22 13:39
送出感谢: 0
接收感谢: 0

#8

帖子 kliz » 2006-10-23 12:10

luddy 写了:查找替换不行吗?
:%s/^M//g
就是替换
头像
千里孤坟
论坛版主
帖子: 212
注册时间: 2005-12-08 16:53
送出感谢: 0
接收感谢: 0
联系:

#9

帖子 千里孤坟 » 2006-10-25 10:14

楼上的那段表达式不能直接用的,因为这“^M”是控制符,不能用“^”+“M”的方式输入。正确的办法是在终端下按住Ctrl+V,然后再迅速按M(或者Ctrl+V+M一起按),这样输入的“^M”其实是一个字符而不是两个,它会被视作一个有效的控制符。
jetspeed
帖子: 17
注册时间: 2006-08-22 11:23
送出感谢: 0
接收感谢: 0

#10

帖子 jetspeed » 2006-10-31 20:43

在dos下换行符是\r\n 要换成\n 只需要把\r\n的\r去掉就行
头像
kofshower
帖子: 1343
注册时间: 2007-03-13 11:23
送出感谢: 0
接收感谢: 0
联系:

#11

帖子 kofshower » 2008-07-10 17:10

千里孤坟 写了:楼上的那段表达式不能直接用的,因为这“^M”是控制符,不能用“^”+“M”的方式输入。正确的办法是在终端下按住Ctrl+V,然后再迅速按M(或者Ctrl+V+M一起按),这样输入的“^M”其实是一个字符而不是两个,它会被视作一个有效的控制符。
记着
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/
KirovAirShip
帖子: 10
注册时间: 2008-07-11 11:05
来自: 山东青岛
送出感谢: 0
接收感谢: 0
联系:

#12

帖子 KirovAirShip » 2008-07-11 11:15

我在Solaris里部署OpenCMS,改配置文件(XML)时,也遇到类似问题
我有如下两种解决方案:
一、使用ftp时,用ASCII模式传送文件
二、使用unix2dos&dos2unix实用程序。反正Solaris里有,Ubuntu的命令行我不常用的。
头像
carbont
帖子: 3406
注册时间: 2007-11-22 10:20
来自: 北京
送出感谢: 0
接收感谢: 1 次

#13

帖子 carbont » 2008-07-11 11:17

kliz 写了:
luddy 写了:查找替换不行吗?
:%s/^M//g
就是替换
LZ是要做码表么?
我就是做码表的时候用这个弄的,还去看了好多东西……
lenovo Thinkpad R60i 0657 LHC
windowsXP……准备换回ubuntu了。

Twitter: @carbont
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12
送出感谢: 0
接收感谢: 0
联系:

#14

帖子 solcomo » 2008-07-11 11:20

千里孤坟 写了:楼上的那段表达式不能直接用的,因为这“^M”是控制符,不能用“^”+“M”的方式输入。正确的办法是在终端下按住Ctrl+V,然后再迅速按M(或者Ctrl+V+M一起按),这样输入的“^M”其实是一个字符而不是两个,它会被视作一个有效的控制符。
好玩 :D
头像
jarodlau
帖子: 501
注册时间: 2005-09-06 20:34
送出感谢: 3 次
接收感谢: 1 次
联系:

#15

帖子 jarodlau » 2008-07-11 14:01

emacs 操作
M-shift-% 输入^M
然后替换为你想要的字符
回复

回到 “Vim和Emacs”