我正在使用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