如果我打开在Windows中创建的文件,所有行都以^M结尾。如何一次删除这些字符?
当前回答
我更喜欢使用以下命令:
:set fileformat=unix
您还可以使用mac或dos分别将文件转换为mac或MS-dos/Windows文件约定。如果文件已经是正确的格式,它也不会起作用。
有关更多信息,请参阅Vim帮助:
:help fileformat
其他回答
使用以下命令:
:%s/^M$//g
要显示^M,请键入CtrlV,然后键入CtrlM。CtrlV告诉Vim按字面意思输入下一个字符。
如果您在Windows中的Notepad或Notepad++中创建文件,将其带到Linux,然后用Vim打开,您将在每行末尾看到^M。为了去除这一点,
在Linux终端上,键入
dos2unix filename.ext
这将产生所需的魔力。
dos2unix可以直接修改文件内容。
您可以直接在文件上使用它,而不需要临时文件重定向。
dos2unix input.txt input.txt
以上使用假定的美国键盘。使用-437选项使用英国键盘。
dos2unix -437 input.txt input.txt
这比你要求的要多一点,但是:
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如果您想删除或添加一些字符,那么应该很容易更改上面的字符范围
我更喜欢使用以下命令:
:set fileformat=unix
您还可以使用mac或dos分别将文件转换为mac或MS-dos/Windows文件约定。如果文件已经是正确的格式,它也不会起作用。
有关更多信息,请参阅Vim帮助:
:help fileformat
推荐文章
- 同一行上有多个命令
- 如何将所有文本转换为小写在Vim
- 从包含文件名的路径获取不包含文件名的完整路径
- Visual Studio代码-在文件末尾插入换行符
- 使用vimdiff查看所有' git diff '
- Git:从另一个分支复制目录中的所有文件
- PHP,获取没有文件扩展名的文件名
- 禁止在vim中创建交换文件
- NERDTree重载新文件
- 如何在远程系统上使用Ansible任务移动/重命名文件
- 在Vim中,我想返回一个词。w的反义词
- 从java.io.File获取java.nio.file.Path对象
- 在tmux模式中丢失vim配色方案
- 在VIM中删除光标后面或周围的单词
- 在Unix中删除回车