求助: vim 添加快捷键的一个问题

2020-02-20 20:53:10 +08:00
 Guaidaodl

起因是因为想用 which-key这个插件. 但是如果想要用这个就需要为每一个快捷键添加一个描述. 每次添加快捷键需要用两行代码:

nnoremap <silent> <leader>wd :close<CR>
let g:which_key_map.w.d = 'delete'

感觉十分不方便, 就想写一个函数.

function! keymap#nnore_leader_key_map(key_sequence, map, description) 
  let len = len(a:key_sequence)

  let index = 0
  let current_map = g:which_key_map
  echo current_map
  while index < len
    let key = a:key_sequence[index]
    if index < len -1
      """ 创建中间的节点
      if !has_key(current_map, key) 
        let current_map[key] = {}
      endif
      let current_map = current_map[key]
    else
      " 写入描述
      let current_map[key] = a:description
    endif
    
    let index = index + 1
  endwhile
  nnoremap <silent> "<leader>".key_sequence map
endfunction

前面都正常, 但是 nnoremap 命令不生效. 请问这里要怎么修改呢?

1040 次点击
所在节点    问与答
1 条回复
Guaidaodl
2020-02-20 21:01:33 +08:00
发现是自己理解有误, nnoremap 是命令, 应该先拼出命令再用 execute 就好了.
```
let cmd = "nnoremap <silent> <leader>" . a:key_sequence . " " . a:map
execute cmd

```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/646207

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX