在VIM中粘贴/完成粘贴时更新状态行

时间:2018-10-18 12:08:58

标签: vim vim-plugin

找到了以下代码段https://github.com/ConradIrwin/vim-bracketed-paste,并认为如果可以对其进行修改,它会很整洁

  1. 粘贴时检测,
  2. 使用“粘贴数据”更新状态行
  3. 设置粘贴
  4. “粘贴数据”
  5. 离开粘贴模式(通过pastetoggle绑定到[201〜]
  6. 将状态行更新为粘贴之前的状态

这是我“尝试过的”方法,但是无法理解如何在“ [201〜”上执行”操作。即使我曾经使用VIM一段时间,但仍然发现这个难以置信的困难(我仍然不完全了解整个代码段),并且欢迎使用提示/指针/解决方案。

let &t_ti .= "\<Esc>[?2004h"
let &t_te = "\e[?2004l" . &t_te

function! PasteStart(ret)
  set statusline=pasting
  set pastetoggle=<f29>
  set paste
  return a:ret
endfunction

function! PasteEnd()
  set statusline=Done
  return ""
endfunction

execute "set <f28>=\<Esc>[200~"
execute "set <f29>=\<Esc>[201~"

map  <expr> <f28> PasteStart("i")
imap <expr> <f28> PasteStart("")
vmap <expr> <f28> PasteStart("c")

map  <expr> <f29> PasteEnd()
imap <expr> <f29> PasteEnd()
vmap <expr> <f29> PasteEnd()

cmap <f28> <nop>
cmap <f29> <nop>

谢谢

0 个答案:

没有答案