用于替换^M的Vim键盘快捷键

izkcnapc  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(215)

打开日志文件后,我手动将^M替换为:%s/<ctrl-v><ctrl-m>//g。我每天都要执行多次此操作,因此我尝试分配F11键来执行此操作。我在 .vimrc 中尝试了以下操作,但没有成功。

:nnoremap <silent> <F11> :let _s=@/ <Bar> :%s/^M//e <Bar> :let @/=_s <Bar> :nohl <Bar> :unlet _s <CR>

***注意:***在上面的语句中,我按了ctrl+vctrl+m来获得^M

我有一个类似的任务,F10删除EOL空白,这工作。

:nnoremap <silent> <F10> :let _s=@/ <Bar> :%s/\s\+$//e <Bar> :let @/=_s <Bar> :nohl <Bar> :unlet _s <CR>

我做错了什么?

ewm0tg9j

ewm0tg9j1#

检查你的终端是否真的将F11键转发给了它正在运行的命令,而不是监听键本身。例如,Windows终端的默认配置会拦截F11键,并且不会转发它,所以你不能在Vim中重新绑定键。
此外,你的命令看起来相当令人费解;我对Vimscript的了解有限,但是如果您的命令的目的是将Windows文件结尾更改为UNIX文件结尾,则可以使用以下更简单的命令:

:nnoremap <silent> <F11> :set fileformat=unix<CR>

还有一个广泛安装的实用程序dos2unix,它也可以做同样的事情,而且对于您的用例来说,它可能更简单。

相关问题