linux - 多行粘贴 (ctrl-r) 到 ex 或搜索|将 ^M 替换为\r

标签 linux unix vim paste ex

当我提取几行并将其粘贴到命令行时,每一个新行都是 ^M相反 \r .例如,如果我在可视模式下复制接下来的两行(使用命令 Vjy ):

line1
line2

并使用命令 /<c-r>" 在命令行(搜索)模式下粘贴它我得到:

/line1^Mline2

但我预计:/line1\rline2

我想做的是在我粘贴代码块时突出显示粘贴的字符串,这对我有帮助。 我知道我可以用

选择它
`[v`] 

但我只想突出显示它,无论如何它可以通过将多行代码粘贴到 ex 中用于替代或其他有趣的事情来使用。

最佳答案

在可视模式下复制下一段:

line1
line2
line3

并将其粘贴到命令行中(使用 <c-r>" )应该给出 line1^Mline2^Mline3^M .如果您希望此文本为 line1\rline2\rline3\r您可以定义以下函数和映射:

function! Substitute()                                                          
    silent! let g:p=substitute(@", "\\n", "\\\\r", "g")                         
    call feedkeys(":", 'n')                                                     
endfunction                                                                     
nnoremap <silent> : :call Substitute()<cr>                                      

命令let g:p=substitute(@", "\\n", "\\\\r", "g")会找到每个 ^M在未命名寄存器 ( :help quotequote ) 中,将其替换为 \r , 并将输出字符串存储在 p 中.粘贴p的内容在命令行中使用 <c-r>=p .

关于linux - 多行粘贴 (ctrl-r) 到 ex 或搜索|将 ^M 替换为\r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50213036/

相关文章:

C++ 输入流 : operation order in Solaris vs. Linux

Unix命令用于计算包含字母组合的单词数量(中间有重复和字母)

vim - g 如何在 Vim ex 命令脚本中循环

python - YouCompleteMe 不适用于 python

c++ - (Eclipse oxygen/Linux) 链接器 C/C++ RAM 使用

php - 语法错误在ubuntu中安装xampp

c++ - 尽可能大地显示所有小部件

linux - 如果缓冲区大小太小而无法容纳 read() 系统调用返回的读取数据,会发生什么情况?

linux - 如何在awk中解析单词?

c++ - 让omnicppcomplete 和ctags 在VIM 中工作