首页 > 解决方案 > 在 VIM 中粘贴/完成粘贴时更新状态行

问题描述

找到以下片段https://github.com/ConradIrwin/vim-bracketed-paste并认为如果我可以修改它会很整洁,

  1. 粘贴时检测,
  2. 使用“粘贴数据”更新状态行
  3. 设置粘贴
  4. “粘贴数据”
  5. 离开 pastemode (通过 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>

谢谢

标签: vimvim-plugin

解决方案


推荐阅读