精华内容
下载资源
问答
  • vim 处理换行符

    2017-05-08 01:16:00
    :set fileformats=unix,dos 2. 查询当前文件格式 :set fileformat? 3. 转换文件格式 :set fileformat=dos 4. 设置文件结束 :set endofline 5. 去掉文件结束 :set noendofline 6. 显示换行 :set list ...

    1. 设置文件格式

     :set fileformats=unix,dos

    2. 查询当前文件格式

    :set fileformat?

    3. 转换文件格式

    :set fileformat=dos

    4. 设置文件结束符

    :set endofline

    5. 去掉文件结束符

    :set noendofline

    6. 显示换行

    :set list

    7. 退出list mode

    :set nolist

    8. 删除换行符

    :%s/\n//g

    9. 删除dos文件的回车符^M

    :%s/\r//g

    转载于:https://www.cnblogs.com/xiaodi-js/p/6823054.html

    展开全文
  • 我想替换每个,在由新线当前文件: :%s/,/\n/g 但它会插入看起来像^@而不是实际的换行符。 该文件不在DOS模式下或其他任何状态。 我该怎么办? 如果您像我一样好奇

    我想替换每个,在由新线当前文件:

    :%s/,/\n/g 
    

    但它会插入看起来像^@而不是实际的换行符。 该文件不在DOS模式下或其他任何状态。

    我该怎么办?

    如果您像我一样好奇,请查看问题, 为什么\\ ra newline for Vim? 也一样


    #1楼

    这是窍门:

    首先,设置Vi(m)会话以允许使用特殊字符(即:换行符)进行模式匹配。 可能值得将此行放入.vimrc或.exrc文件中:

    :set magic
    

    接下来,执行:

    :s/,/,^M/g
    

    要获取^M字符,请输入Ctrl + V,然后按Enter 。 在Windows下, 按Ctrl + Q ,然后输入 。 我唯一能记住这些的方法是记住它们的意义:

    答: 用来代表换行符的最糟糕的控制字符是什么?

    B: q (因为通常表示“退出”)或v是因为错误输入Ctrl + C并杀死编辑器非常容易。

    答: 可以。


    #2楼

    在语法s/foo/bar ,根据上下文, \\r\\n具有不同的含义。


    短:

    对于foo

    \\ n =换行符(在Linux / Mac上为LF,在Windows上为CR + LF)
    \\ r =回车(CR)

    对于bar

    \\ r =是换行符
    \\ n =空字节。

    更长(使用ASCII数字):

    NUL = 0x00 = 0 = Ctrl + @
    LF = 0x0A = 10 = Ctrl + J
    CR = 0x0D = 13 = Ctrl + M

    这是ASCII控制字符的列表。 通过Ctrl + VCtrl + --- key ---将它们插入Vim。

    在Bash或其他Unix / Linux shell中,只需键入Ctrl + --- key ---

    在Bash中尝试Ctrl + M 。 尽管Linux系统使用换行符进行行定界,但Shell意识到了它的含义与按Enter相同。

    要在bash中插入文字,也可以在它们前面加上Ctrl + V

    在Bash中尝试:

    echo ^[[33;1mcolored.^[[0mnot colored.
    

    这使用ANSI转义序列 。 通过Ctrl + VEsc插入两个^[ 's。

    您也可以尝试按Ctrl + VCtrl + MEnter ,这将为您提供:

    bash: $'\r': command not found
    

    还记得上面的\\r吗? :>

    ASCII控制字符列表与完整的ASCII符号表不同 ,在于可以在其中找到通过Ctrl键(haha)插入到控制台/伪终端/ Vim中的控制字符。

    而在C语言和大多数其他语言中,通常使用八进制代码表示这些“字符”。

    如果您真的想知道所有这些信息来自何处: TTY变得神秘 。 这是您会遇到的关于此主题的最佳链接,但请注意:有龙。


    TL; DR

    通常foo = \\nbar = \\r


    #3楼

    这是我思考方式的最佳答案,但在表中会更好:

    为什么\\ ra newline for Vim?

    因此,改写:

    您需要使用\\r在正则表达式替换中使用换行符(ASCII 0x0A ,Unix换行符),但这是该替换所特有的-通常,您应该继续期望使用\\n进行换行,而使用\\r进行换行返回。

    这是因为Vim在替换中使用\\n表示NIL字符(ASCII 0x00 )。 您可能希望NIL改为\\0 ,将\\n释放给它通常用于换行,但是\\0在正则表达式替换中已经具有含义,因此将其转移到\\n 。 因此,接下来还要将换行符从\\n移到\\r (在正则表达式模式中,它是回车符ASCII 0x0D )。

    Character                | ASCII code | C representation | Regex match | Regex replacement
    -------------------------+------------+------------------+-------------+------------------------
    nil                      | 0x00       | \0               | \0          | \n
    line feed (Unix newline) | 0x0a       | \n               | \n          | \r
    carriage return          | 0x0d       | \r               | \r          | <unknown>

    注意: ^M (在Linux上为Ctrl + V Ctrl + M )用于正则表达式替换时会插入换行符,而不是像其他人建议的那样返回回车符(我刚刚尝试过)。

    还要注意,Vim在基于文件格式设置保存到文件时会转换换行符,这可能会引起混乱。


    #4楼

    使用\\r代替\\n

    \\n替换会在文本中插入一个空字符。 要获取换行符,请使用\\r搜索换行符时,您仍将使用\\n 。 这种不对称性是由于\\n\\r 所做的事情略有不同

    \\n匹配行尾(换行符),而\\r匹配回车符。 另一方面,在替换中, \\n插入一个空字符,而\\r插入一个换行符(更准确地说,它被视为输入<CR> )。 这是一个小的非交互式示例,使用Vim命令行功能进行了说明(换句话说,您可以将以下内容复制并粘贴到终端中以运行它)。 xxd显示了结果文件的xxd

    echo bar > test
    (echo 'Before:'; xxd test) > output.txt
    vim test '+s/b/\n/' '+s/a/\r/' +wq
    (echo 'After:'; xxd test) >> output.txt
    more output.txt
    
    Before:
    0000000: 6261 720a                                bar.
    After:
    0000000: 000a 720a                                ..r.
    

    换句话说, \\n已将字节0x00插入文本; \\r插入了字节0x0a。


    #5楼

    \\r可以为您完成这里的工作。


    #6楼

    您需要使用:

    :%s/,/^M/g
    

    要获取^M字符,请按Ctrl + v,然后按Enter


    #7楼

    在Windows上的Vim中,使用Ctrl + Q代替Ctrl + V。


    #8楼

    Eclipse中^M字符可以嵌入到一行中,并且您希望将它们转换为换行符。

    :s/\r/\r/g
    

    #9楼

    这是对我有用的答案。 来自这个人:

    ---- quoting 使用vi编辑器在replace中插入换行符


    我必须做的其他事情,无法记住,然后必须查找。

    在vi中,要在搜索和替换中插入换行符,请执行以下操作:

    :%s/look_for/replace_with^M/g
    

    上面的命令会将“ look_for”的所有实例替换为“ replace_with \\ n”(其中\\ n表示换行符)。

    要获取“ ^ M”,请输入组合键Ctrl + V ,然后(释放所有键)按Enter键。



    #10楼

    但是如果必须替换,则可以进行以下操作:

    :%s/\n/\r\|\-\r/g
    

    在上面,下一行替换为下一行,然后|-再次替换为新行。 这在Wiki表中使用。

    如果文本如下:

    line1
    line2
    line3
    

    改为

    line1
    |-
    line2
    |-
    line3
    

    #11楼

    如果您需要对整个文件执行此操作,还建议我可以从命令行尝试:

    sed 's/\\n/\n/g' file > newfile
    
    展开全文
  • dos, unix 换行符

    2012-02-13 10:25:40
    本来在linux下写了个安装jdktomcat的sh脚本,当时运行没有问题。过后,在windows下存放了一段时间, 现在拿到linux执行,运行时却报错“syntax error near unexpected token `in”。 难道过了一段时间变质了?不过...
    本来在linux下写了个安装jdk和tomcat的sh脚本,当时运行没有问题。过后,在windows下存放了一段时间,   现在拿到linux执行,运行时却报错“syntax error near unexpected token `in”。   难道过了一段时间变质了?不过确实是变质了。windows下,我曾经打开过这个文档,造成文档成了dos下的格式。(开来这玩意跟食物一样不能随便打开)。操作上可以如下验证文档。   在保证语法正确的情况下:   1.新建一个a.sh文件。在其中写入几行脚本保存。   2.用命令vi -b a.sh你会看到的内容和用 vi a.sh看到的内容一样。   3.现在同样的比较下我原来的文档。发现每行脚本最后多了个^M。   那么接下来就要搞清楚这个^M是什么东东?   long long ago..... 老式的电传打字机使用两个字符来另起新行。一个字符把滑动架移回首位 (称为回车,
    ,ASCII码为0D),另一个字符把纸上移一行 (称为换行, 
    ,ASCII码为0A)。当计算机问世以后,存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。UNIX 开发者决定他们可以用 一个字符来表示行尾,Linux沿袭Unix,也是
    。Apple 开发者规定了用
    。开发 MS-DOS以及Windows 的那些家伙则决定沿用老式的
    。   因为MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下用VC写的代码,行尾后的“^M”符号,表示的是符。   在Vim中解决这个问题,很简单,在Vim中利用替换功能就可以将“^M”都干掉,键入如下替换命令行:   1)vi -b setup.sh   2)在命令编辑行<就是: 按ESC键 然后shift+:冒号>输入:%s/^M//g   注意:上述命令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”键生成的。   这样替换掉以后,保存就可以执行了。当然还有其他的替换方式比如:   a.一些linux版本有 dos2unix 程序,可以用来祛除^M。
    
    展开全文
  • dos2unix转换Linux与Window结束 LinuxWindows文本文件的结束标志不同。在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行。所以在Linux中使用Windows的文本文件常常会出现错误。为了...

    Linux和Windows文本文件的行结束标志不同。在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行。所以在Linux中使用Windows的文本文件常常会出现错误。为了避免这种错误,Linux提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把"/r/n"转化成"/n",unixtodos把"/n"转化成"/r/n"。
    命令dos2unix和unix2dos的使用非常简单,格式为:dos2unix filename

    批量进行文件转换: find -type f | xargs dos2unix

    其它去除windows文本中多余的回车符(^M)方式:
    1) 使用sed
    去掉windows下回车符 (注意^M 在linux下写法是回车换行符,输入方法是按住CTRL+v,松开v,按m)
    sed -i ‘s/^M//g’ filename
    2) 在VIM下类似
    :%s/^M//g
    (^M输入方法和上面方法相同)

    dos2unix 命令

    这是一个很简单的命令.功能是将DOS/MAC下的文件转化为UNIX的文本文件格式.用法详见下面.

    SYNOPSYS
    dos2unix [options] [-c convmode] [-o file …] [-n infile outfile …]
    Options:
    [-hkqV] [–help] [–keepdate] [–quiet] [–version]

    DESCRIPTION
    dos2unix, the program that converts plain text files in DOS/MAC format to UNIX format.

    OPTIONS
    The following options are available:

    -h --help
    Print online help.

    -k --keepdate
    Keep the date stamp of output file same as input file.

    -q --quiet
    Quiet mode. Suppress all warning and messages.

    -V --version
    Prints version information.

    -c --convmode convmode
    Sets conversion mode. Where convmode is one of: ASCII, 7bit,ISO, Mac with ASCII being the default. Simulates dos2unix under SunOS.
    -o --oldfile file …
    Old file mode. Convert the file and write output to it. The pro-
    gram default to run in this mode. Wildcard names may be used.

    -n --newfile infile outfile …
    New file mode. Convert the infile and write output to outfile.
    File names must be given in pairs and wildcard names should NOT be used or you WILL lost your files.

    EXAMPLES
    Get input from stdin and write output to stdout. dos2unix

    Convert and replace a.txt. Convert and replace b.txt.

    dos2unix a.txt b.txt

    dos2unix -o a.txt b.txt

    Convert and replace a.txt in ASCII conversion mode. dos2unix a.txt -c iso b.txt

    Convert and replace b.txt in ISO conversion mode.

    dos2unix -c ascii a.txt -c iso b.txt

    Convert c.txt from Mac to Unix ascii format.

    dos2unix -c mac c.txt b.txt

    Convert and replace a.txt while keeping original date stamp.

    dos2unix -k a.txt

    dos2unix -k -o a.txt

    Convert a.txt and write to e.txt.

    dos2unix -n a.txt e.txt

    Convert a.txt and write to e.txt, keep date stamp of e.txt same as a.txt.

    dos2unix -k -n a.txt e.txt

    Convert and replace a.txt. Convert b.txt and write to e.txt.

    dos2unix a.txt -n b.txt e.txt

    dos2unix -o a.txt -n b.txt e.txt

    Convert c.txt and write to e.txt. Convert and replace a.txt. Convert and replace b.txt. Convert d.txt and write to f.txt.

    dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt

    转载: https://blog.csdn.net/anxuegang/article/details/6532978

    展开全文
  • Linux和dos下的换行符

    2015-04-13 11:16:21
    ^M,神奇的字符!相信很多人写 Shell 脚本的时候都被这个字符坑过,我自己也至少被坑过两次。最近周围的好几个小伙伴又被 ^M 坑,花了好几个小时检查脚本的错误,...这个得先从 Windows Unix 下的换行符开始说起
  • windows 系统行尾的结束符由 回车符 换行符 两个符号组成( “\r\n”),而 Unix 系统的行尾结束符只有 “换行符”("\n")。 如果你是两个系统交叉使用,这个差异就会变得很蛋疼。试着想象一下,你在 windows ...
  • 把windows换行符转换成unix换行符

    千次阅读 2015-12-26 14:48:58
    1. 利用Vim中的命令: :set fileformat=unix :w 2. 利用工具dos2unix:
  • VIM技巧1 – 删除尾空格 (正则表达式) :%s= *$== 该命令全局查找文本文件的尾空格并删除。 解释: %s全局查找替换 =为%s命令的分隔,如果把=为/,则该命令可以写为:%s/ *$// ” *$”, $表示...
  • 在不更改vimrc的情况下, 至少有3种解决方法: 方法一: 以dos格式重新打开该文件 :e ++ff=dos 设置ff为unix :set ff=unix ...以dos格式重新打开该文件 ...以unix格式打开文件(若已经是unix格式,则跳...
  • Windows下Notepad++编辑-文档格式转换-转为Unix Linux:sed -i 's/\r//' filename Linux:dos2unix filename Vim:命令模式下输入:%s...如果出现fileforma=dos 表示是Windows上的换行符。继续输入:set fileformat=u...
  • Vim 修改文件换行符格式

    千次阅读 2014-11-25 13:17:55
    /bin/bash^M: bad interpreter: No such file or directory 修改文件换行符格式
  • 转换Windows/DOS换行符

    2010-08-11 21:26:00
    对于*nix环境下的用户而言,Windows/DOS换行符往往造成意想不到的麻烦,此时可以用以下命令在vim中或shell下将其转化: vim: :set fileformat=unix :w Shell: $ dos2unix filename Technorati 标签: shell,vim
  • 一、简述 平时我们把Windows编写好的sh文件放在linux上跑时,经常出现换行符的...如果出现fileforma=dos 表示是Windows上的换行符。 :set fileformat=unix :wq! 好了。 转载于:https://www.cnblogs.com/...
  • DOS 和Unix 文件--vim转化

    千次阅读 2008-09-23 10:43:00
    很久以前,老式的电传打字机使用两个字符来另起新。...UNIX 开发者决定他们可以用 一个字符来表示尾。Apple 开发者 规定了用 。开发 MS-DOS (以及微软视窗) 的那些家伙则决定沿用老式的。 那意味着,如果你试
  • #WINDOWS和UNIX换行符的理解**file1.txt**17.143.161.37其他美国54.163.255.40其他美国弗吉尼亚州亚马逊公司**[root@localhosthome]#cat-vfile2.txt|head**>-v,--show-nonprintinguse^andM-not...
  • UNIX/Linux 使用的是 0x0A(LF),但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。 问题 需要把再Windows git下模式dos改为unix 。 方法命令 #在vim下面查看当前文本的模式类型,一般为dos,unix...
  • 在linux下打开windows编辑过的文本,会出现由于换行符不一致而导致的内容格式错乱的问题。最常见的就是出现^M 。 我出现的问题是:在windows编辑过的文件,传到linux上后再用vim打开,内容没有换行。也就是所有文件...
  • DOS和UNIX脚本文件之间的转换DOS和UNIX脚本文件之间的转换 vscode dos2unix perl vim awk sed tr 在windows上编写的shell、python等脚本在Linux上无法正常的执行,会有如下提示: shell: bash: ./print.sh: /bin/...
  • 文章目录Unix、Windows、OSX系统下的换行符如何查看换行符VIM下切换换行符切换成Mac系统切换成Dos系统换行符不同会带来的问题用VIM打开换行符为CR的文件对文件的处理 Unix、Windows、OSX系统下的换行符 Windows系统...
  • vim unix和dos风格设置

    2015-01-29 19:55:53
    linux下使用vim进程编辑的时候,有时候会遇到编辑的文本的每行的最后会多一个^M,这个^M实际上是windows下的换行符到了linux下解析出错而导致的,因为在linux下的换行符是 \n ,在windows下的换行符是 \r\n. ...
  • 如果打开在Windows中创建的文件,则所有均以^M结尾。 如何一次删除所有这些字符?
  • vimunix和dos格式转换

    2013-09-17 18:48:00
    那意味着,如果你试图把一个文件从一种系统移到另一种系统,那么你就有换行符方面的麻烦。 如果你用往日美好的 Vi 来尝试编辑一个采用 MS-DOS 格式的文件,你将会发现每一行的末尾有个 ^M 字符。(^M 就是 )。 ...
  • 修改文件中的换行符

    2019-12-06 17:22:15
    修改文件中的换行符 dos 格式文件传输到 unix 系统时,会在每行的结尾多一个 ^M, 而此文件若是一个可执行文件的话,会导致此文件不能被执行. 在网上搜了半天, 竟然没有靠谱的, 所以决定自己研究一下吧. dos2unix 在 ...
  • vim转换M$文本中的换行符^M

    千次阅读 2010-06-08 15:39:00
    Dos/Windows 里,文本文件的换行符为 /r/n ,而在*nix系统里则为/n,所以 DOS/Windows 里编辑过的文本文件到了 *nix 里,每一行都多了个 ^M 。删掉该字符可以在 VI 里用下面的方法试试 1、 :% s//r//g...
  • VI中如何去掉DOS文件中的换行符^M

    千次阅读 2014-04-23 18:03:23
    在window下面保存的文件,有的时候会习惯地方式传递到Ubuntu下,用vi查看编辑此类文件时候,总会有^M出现在尾.那么如何去掉呢?请看下面的文章:
  • 换行符的转换:set ff=unix

    千次阅读 2020-03-28 10:00:16
    et ff=unix : 告诉 vi 编辑器,使用unix换行符 老式的电传打字机使用两个字符来代表换行。一个字符把滑动架移回首位 (称为回车, ),另一个字符把纸上移一行 (称为换行, )。 当计算机问世以后,人们对换行的处理没有...
  • 换行方式在早期的打印机时代,开始新的一要占用两个字符的时间。如果到了一的结尾处,你要快速回到新的一的开头,需要打印针头在纸面上飞快地掠过,...UNIX人认为在到达一的结尾时新增一 (LF),而Mac人则认同
  • 很久以前,老式的电传打字机使用两个字符来另起新。一个字符把滑动架移回首位 (称为回车, <CR>),另一个字符把纸上移一 (称为换行, <LF>)。 当计算机问世以后,存储器曾经非常昂贵。有些人就认定没...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,764
精华内容 2,305
关键字:

dos和unixvim显示换行符