如果我打开在Windows中创建的文件,所有行都以^M结尾。如何一次删除这些字符?
当前回答
:g/Ctrl-v Ctrl-m/s///
CtrlM是字符\r,或回车符,DOS行结尾添加该字符。CtrlV告诉Vim在命令行中插入文字CtrlM字符。
作为一个整体,该命令将所有\r替换为无,并将它们从行的末尾删除。
其他回答
我想要用换行符代替^M。Perl拯救:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
或写入标准输出:
perl -p -e 's/\x0d/\n/g' < excel_created.txt
我通常使用
:%s/\r/\r/g
这看起来有点奇怪,但由于Vim与linefeed的匹配方式,它起到了作用。我也觉得更容易记住:)
这比你要求的要多一点,但是:
nmap <C-d> :call range(line('w0'),line('w$'))->map({_,v-> getline(v)})->map({_,v->trim(v,join(map(range(1,0x1F)+[0xa0],{n->n->nr2char()}),''),2)})->map({k,v->setline(k+1,v)})<CR>
运行以下命令:set ff=unix|dos,不再需要unix2dos。
trim()的单参数形式具有与上面相同的默认掩码,加上0X20(实际空格),而不是0x1F该默认掩码清除所有非打印字符,包括难以找到的非中断空格[0xa0]从线条范围创建线条列表将该列表映射到trim函数,使用与源代码相同的掩码代码,减少空格再次将其映射到setline以替换行。all:setfileformat=do此时选择保存文件的eol,dos或unix如果您想删除或添加一些字符,那么应该很容易更改上面的字符范围
:g/Ctrl-v Ctrl-m/s///
CtrlM是字符\r,或回车符,DOS行结尾添加该字符。CtrlV告诉Vim在命令行中插入文字CtrlM字符。
作为一个整体,该命令将所有\r替换为无,并将它们从行的末尾删除。
您可以使用:
vim somefile.txt +"%s/\r/\r/g" +wq
或者dos2unix实用程序。
推荐文章
- 同一行上有多个命令
- 如何将所有文本转换为小写在Vim
- 从包含文件名的路径获取不包含文件名的完整路径
- Visual Studio代码-在文件末尾插入换行符
- 使用vimdiff查看所有' git diff '
- Git:从另一个分支复制目录中的所有文件
- PHP,获取没有文件扩展名的文件名
- 禁止在vim中创建交换文件
- NERDTree重载新文件
- 如何在远程系统上使用Ansible任务移动/重命名文件
- 在Vim中,我想返回一个词。w的反义词
- 从java.io.File获取java.nio.file.Path对象
- 在tmux模式中丢失vim配色方案
- 在VIM中删除光标后面或周围的单词
- 在Unix中删除回车