Python-Vim函数使用箭头键从列表中选择项目

时间:2015-02-26 05:43:47

标签: python vim

我正在试图模仿Vim中的某些Ctrl-P行为。到目前为止我所拥有的:

  1. 用户呼叫我的功能。
  2. 打开一个窗口,其中包含一系列项目。
  3. 项目列表下会显示提示。
  4. 我希望用户能够使用向上和向下箭头从项目中进行选择,但不会退出提示(他们也可以在其中键入)。
  5. 我有1-3人受到控制,但我正在努力争取#4。我已经达到了这个目标:

    python << EOF
    import vim
    
    def MyWindow():
      # Create a new window at the bottom
      vim.command("below new")
      vim.current.buffer.append("123")
      vim.current.buffer.append("234")
      vim.current.buffer.append("345")
    
      vim.command("redraw")
    
      vim.command("setl cursorline")
      vim.command("echon '>> ' | echoh None")
    
      while True:
        vim.command("let x = getchar()")
        character_code = vim.eval("x")
    
        if character_code == "13":
          # Exit by pressing Enter
          break
        elif character_code == "\x80kd": # Down
          vim.command("keepj norm! j")
          vim.command("redraw")
    EOF
    command! MyWindow python MyWindow()
    

    现在第一个向下箭头按键工作正常,但后续的向下箭头键不会,即使执行了“if down key pressed”情况下的代码。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我可以通过这样做来实现它:

elif character_code == "\x80kd": # Down
  vim.command("keepj norm! j")
  vim.command("setl cursorline")  # <-- This fixed it
  vim.command("redraw")

但我不知道为什么或者这是否合情合理。