代码之家  ›  专栏  ›  技术社区  ›  Geo

如何更改用于在vim中自动完成的keybinding?

  •  36
  • Geo  · 技术社区  · 15 年前

    我不太喜欢 Ctrl-n ,我希望能够使用 Ctrl-Space . 有什么办法吗?

    3 回复  |  直到 15 年前
        1
  •  35
  •   Community CDub    13 年前
    if has("gui_running")
        " C-Space seems to work under gVim on both Linux and win32
        inoremap <C-Space> <C-n>
    else " no gui
      if has("unix")
        inoremap <Nul> <C-n>
      else
      " I have no idea of the name of Ctrl-Space elsewhere
      endif
    endif
    
        2
  •  20
  •   Pierre-Antoine LaFayette    15 年前

    我也喜欢Ctrl+空间映射。

    " Remap code completion to Ctrl+Space {{{2
    inoremap <Nul> <C-x><C-o> 

    inoremap <Nul> <C-n>
        3
  •  10
  •   Hulk1991 moinudin    12 年前

    inoremap <C-E> <C-N>
    

    问题在于 Ctrl键 空间 大多数终端只会将其视为一个空间。我假设你在X里面使用终端程序;如果你用的是不同的东西,你必须自己提供相关的替代品。

    Bash的readline通常有 Ctrl键 Ctrl键 然后在bash命令行中插入Home ^[[H 或者类似的命令行,而不是转到行的开头。试着按一下 Ctrl键 - 然后 - 空间 . 也许你会看到一个空间。

    - . 像Firefox这样的程序并不在意;他们检测哪个基本键被按下,并为自己找出哪些修改器被按下。但大多数基于终端的程序只会看到 Ctrl键 - 空间 Ctrl键 - 空间 不一样。

    我怀疑你能单独用xmodmap做这个改变;您可能需要进行较低级别的/usr/share/X11/xkb/*黑客攻击。这很复杂,我甚至不知道你是否首先使用X,所以我就把它放在那里。

    一些终端(如urxvt)允许您指定自己的键绑定。像Firefox一样,即使你不做任何特殊的配置,它们也能分辨出什么时候是空间,什么时候是控制空间。所以你可以告诉urxvt在你按下时输出“\033I\u type\u CONTROL\u SPACE\u DAMMIT” Ctrl键 - 空间 . 然后你可以告诉维姆去地图 那个 <C-N> .

    编辑:我忘了Ctrl空格用来输出 \0 Ctrl键 -冒号或 中高音 - 空间 .

    推荐文章