我正在使用vim来维护一天的工作(我用来生成输出等的命令)的博客,有时我需要复制粘贴具有特殊html字符的字符串。有没有办法做一个“HTML粘贴”模式,将(例如)将<转换为& lt ;?vim是否有HTML转义粘贴模式?
回答
有几个小功能here如果有人感觉就像修改他们接受一个范围,然后提供经过[
和]
标记作用于最后粘贴的文本的映射。
实际上,看了一下之后,根本不需要修改vim提示中的函数。如果某个函数没有明确地通过range
选项,则该函数将针对给定范围的每一行调用一次。这意味着你所需要做的就是用范围调用函数。
下面是几个有用的例子。第一个在最后粘贴的文本中为每一行调用HtmlEscape(),第二个是相同的,但对于视觉选择的块中的每一行都是一样的。如果你想要更多的东西所取代,你不得不将它们添加
nnoremap <Leader>h :'[,']call HtmlEscape()<CR>
vnoremap <Leader>h :call HtmlEscape()<CR>
function HtmlEscape()
silent s/&/\&/eg
silent s/</\</eg
silent s/>/\>/eg
endfunction
明显;:添加到您的.vimrc
链接的维基页面上有很多。
太棒了!此外,一个litte解释
只是好奇,为什么'\&'而不是'&'在替代? – rox 2016-08-15 02:33:20
@rox请参阅':help sub-replace-special'。这一切都取决于你的vim设置是什么,但是默认'&'被替换为整个匹配的字符串。 – 2016-08-15 11:46:03
您可以使用一个映射,将转换寄存器的值,然后将其粘贴:
python import xmlrpclib, vim
function! EscapeHTML(str)
try " Force any error to be an exception "
let d={}
python vim.eval("extend(d, {'xml': '"+xmlrpclib.escape(vim.eval("a:str")).replace("'", "''")+"'})")
return d.xml
endtry
endfunction
function! s:PasteHTML()
return "\"=EscapeHTML(getreg(".string(v:register)."))\np"
endfunction
nnoremap <expr> ,p <SID>PasteHTML()
需要安装Python支持和python活力。 xmlrpclib
软件包附带python。如果你不想Python,请替换EscapeHTML函数。使用此脚本,p
将像p
一样工作,除了转换其输入。
对于简单的XML编码,我使用Tim Pope的unimpaired.vim。
[x
后跟一个运动- 视觉上选择文本然后
[x
[xx
编码当前线
为了编码只粘贴文本:
`[[x`]
说明:
`[
和`]
是由变化或拉紧的边界设置的标记。在开始处为`[
,在末尾为`]
。- 第一位置移动到刚粘贴文本的开始与
`[
- 接着执行
[x
编码以下运动 - 通过使用
`]
运动将是所有当前光标位置之间的粘贴结束时的文本文本。
您也可以选择这个包裹成一个映射
nmap <leader>x `[[x`]
的更多信息:
:h mark-motion
:h `[
非常好的提示和优秀的背景 – sehe 2011-04-20 19:37:32
- 1. 在vim中以命令模式或搜索模式粘贴(/)
- 2. 将数据粘贴到vim中比使用粘贴模式更快捷?
- 3. 粘贴在vim脚本
- 4. Vim - Paste自动粘贴在
- 5. Vim的复制和粘贴
- 6. 无法在VIM中粘贴
- 7. Vim的:在插入模式光标前粘贴
- 8. 如何在gnome-terminal中为Vim启用括号粘贴模式?
- 9. 在视觉模式下选择粘贴到vim窗口外
- 10. 如何禁用VIM“插入(粘贴)”模式中的箭头键?
- 11. 如何将文本粘贴到Vim可视化模式?
- 12. 任何vim命令在粘贴后进入插入模式?
- 13. vim ex模式:复制图案并粘贴到文件末尾?
- 14. 如何在vim中以命令行模式粘贴文本?
- 15. 捕获粘贴事件/粘贴html - javascript
- 16. 剪贴板在iOS上是否正式称为“粘贴板”?
- 17. 如何在vim中删除/粘贴粘贴并正确缩进? (不是在说:粘贴)
- 18. 使用系统剪贴板复制并粘贴而不使用粘贴模式?
- 19. 如何在Vim中的html标签之间粘贴东西?
- 20. VIM Ctrl-V与Windows粘贴冲突
- 21. 从外部复制并粘贴到vim
- 22. 复制并粘贴Vim效果
- 23. 无法粘贴到Vim的Intellij Idea中
- 24. Vim - 不要删除视觉粘贴
- 25. 记事本VIM复制/粘贴代码
- 26. 如何用vim粘贴新行?
- 27. 如何在vim中阻止(列?)粘贴
- 28. vim:如何选择粘贴的块
- 29. 从vim和tmux切割和粘贴
- 30. VIM复制粘贴缓冲区
VIM-不受损害 - https://github.com/tpope/vim-unimpaired#unimpairedvim – arcseldon 2017-11-10 09:02:47