vim中创建可重复的映射

可以通过g@传递它们来创建可重复映射

function! s:insspace(...)
  if a:0
    execute 'normal' v:count1.'i '."\<esc>".'`['
  else
    " 安装"
    let &operatorfunc = matchstr(expand('<sfile>'), '[^. ]*$')
    return "g@\<space>"
  endif
endfunction

nnoremap <silent><expr> <space> <sid>insspace()

通常g@用于运算符,但通过使用g@<space>,可为实际操作.这里实际上调用了两次s:insspace函数,一次无参数,意思是"设置",它设置operatorfunc选项为自己(类似matchstr),然后由vim一个参数再次调用.

posted @   zjh6  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示