Yggdroot / LeaderF

An efficient fuzzy finder that helps to locate files, buffers, mrus, gtags, etc. on the fly for both vim and neovim.
Apache License 2.0
2.14k stars 178 forks source link

无法在preview窗口中移动光标 #1023

Closed irreallich closed 1 year ago

irreallich commented 1 year ago

set nocompatible

let mapleader = ' ' let g:mapleader = ' '

set encoding=utf-8 " must set this value to support chinese work in vimrc

let $MYVIMRC=fnamemodify(expand(''), ':p') let $VIMFILES=fnamemodify(expand(''), ':p:h') set runtimepath+=$VIMFILES

call plug#begin() Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' } call plug#end()

" 替换leaderf 插件中默认的键 let g:Lf_CommandMap = { \ '': [''], \ '': [''], \ '': [''], \ '': [''], \ }

let g:Lf_PopupPosition = [2 , 0] " popup 窗口位置屏幕中间偏上 let g:Lf_PreviewInPopup = 1 " 是否在popup中preview let g:Lf_PopupPreviewPosition = 'bottom' let g:Lf_WindowPosition = 'popup' let g:Lf_ShortcutF = "lf"

### Describe your question, feature request, or bug.
### Steps to reproduce
复现步骤:

leader键lf open file list tab后选择较长的文件, 按p打开preview 通过或者在preview窗口中移动光标



### Actual behaviour
    结果:
    commit https://github.com/Yggdroot/LeaderF/commit/27bd938a422fc6fcfc453fa88fe2ad453a012074 无法在preview中移动光标
    commit https://github.com/Yggdroot/LeaderF/commit/86013dd6208609e51c722e91e8faa6c4597ed83a 可以移动光标

### Expected behaviour
    期望光标可以在preview中移动
Yggdroot commented 1 year ago

复现不了。

Yggdroot commented 1 year ago

难道跟终端有关系?

irreallich commented 1 year ago

我试过 ubuntu 2004的默认终端 win11 下putty直连 win11 下putty 通过tmux访问 均有这个问题

区别就在两个不同的commit id上

Yggdroot commented 1 year ago

https://github.com/Yggdroot/LeaderF/blob/6a4e01d85337c781cf6fe37e19f87e41869adfad/autoload/leaderf/python/leaderf/manager.py#L2917-L2920

Yggdroot commented 1 year ago

直接把这里代码改成别的键试一下,我怀疑你的电脑上识别不了Ctrl-up,Ctrl-down

irreallich commented 1 year ago

不好意思,回复晚了, 我担心我描述的不清楚, 所以先明确一下: 我希望在preview的popup中上下移动光标 例如打开文件列表后, 选择某个文件按p打开此文件的preview窗口, 在preview下移动光标, 这样可以预览文件内容

关于你的commment, 我大概修改成这个样子, 依然不好使. 图片 另外修改这个文件后需要编译么? 还是直接就生效? 如果需要编译的话, 命令是什么, 我试一下

Yggdroot commented 1 year ago

不需要编译。 有点奇怪。 https://github.com/Yggdroot/LeaderF/blob/6a4e01d85337c781cf6fe37e19f87e41869adfad/autoload/leaderf/python/leaderf/manager.py#L1122 https://github.com/Yggdroot/LeaderF/blob/6a4e01d85337c781cf6fe37e19f87e41869adfad/autoload/leaderf/python/leaderf/manager.py#L1134 在这两行下面,加上lfCmd("redraw") 再试一下。

irreallich commented 1 year ago

依然没有变化 我觉得应该不是电脑上识别不了Ctrl-up,Ctrl-down 因为如果使用 86013dd6208609e51c722e91e8faa6c4597ed83a 这个commit, 那么功能就是正常的

Yggdroot commented 1 year ago

第一个有问题的commit是哪个?

irreallich commented 1 year ago

是这个 https://github.com/Yggdroot/LeaderF/commit/27bd938a422fc6fcfc453fa88fe2ad453a012074 里面改的文件比较多, 如果能够列出与这个功能有关的改动, 一个个rollback, 可能容易一些

我有点事情先离开一下, 稍晚些回复你

irreallich commented 1 year ago

@Yggdroot 能否根据这个commit修改的文件列表中, 找出和popup preview相关的文件出来 我尝试两个版本对比测试一下

Yggdroot commented 1 year ago

https://github.com/Yggdroot/LeaderF/blob/6a4e01d85337c781cf6fe37e19f87e41869adfad/autoload/leaderf/python/leaderf/manager.py#L1124-L1134

按ctrl-down就是调用的这个函数,可以加一下打印,看看是不是走到了。

irreallich commented 1 year ago

可用于复现的commit id 84a9e0160df51dce9218efe5a1e3e6c6af28874e 这个应该是最新的leadf版本 第一次出现此问题的 commit id 27bd938a422fc6fcfc453fa88fe2ad453a012074

基于一下配置测试:

  1. 在文件列表状态为INPUT的情况下, 打开自动popup窗口, 可以通过或者上下移动preview的文件内的光标, 此时_toUpInPopup或者_toDownInPopup 会被调用
  2. 在文件列表状态为NORMAL的情况下, 打开自动popup窗口, 无法通过或者上下移动preview的文件内的光标, 此时_toUpInPopup或者_toDownInPopup 不会被调用
  3. 注意, github的代码上传总是显示有问题, 我在配置中对键位的修改如下: let g:Lf_CommandMap = { \ '<C-R>': ['<C-E>'], \ '<C-F>': ['<C-D>'], \ '<C-Up>': ['<C-K>'], \ '<C-Down>': ['<C-J>'], \ } 截图: 图片

使用如下的vim配置, 修改键位的部分显示错误, 请直接使用下面的vimrc最小配置 vimrc_minimal.txt

Yggdroot commented 1 year ago

搞了这么长时间,原来是个乌龙。 g:Lf_CommandMap 不能改normal模式下的按键。所以normal模式下,按ctrl-down,ctrl-up应该可以移动。

irreallich commented 1 year ago

那么有没有办法在修改normal模式下的键位呢? 因为如果只能使用ctrl-down,ctrl-up来移动preview的光标,会有至少有两个问题

  1. 对于带有方向键的键盘, 手需要离开主键盘区, 对于部分笔记本, 这几个键位是很不好摸的
  2. 某些特殊键盘没有单独的方向键, 需要组合键才能按出来, 这个也不是很方便
  3. 据我所知, 某些特殊终端 比如说VT100 也没有方向键, 虽然很小众, 但这也会影响leaderf的通用性 能够在normal模式下修改键位会解决这些问题

而在版本 86013dd6208609e51c722e91e8faa6c4597ed83a , 这个功能是存在的, 不知道为什么后续被清除掉了?

Yggdroot commented 1 year ago

我知道你说的问题了。

irreallich commented 1 year ago

我知道你说的问题了。

可否了解下, 即将怎么处理 以后版本是否支持normal下修改按键?

Yggdroot commented 1 year ago

这个问题我正准备修复,应该是https://github.com/Yggdroot/LeaderF/commit/65740651731c01363c2dad0c528102bc0c7876fe 引入的bug。

irreallich commented 1 year ago

这个问题我正准备修复,应该是6574065 引入的bug。

👍

Yggdroot commented 1 year ago

https://github.com/Yggdroot/LeaderF/blob/3ded37f92807d8c6ad831d5af2c4ff22bfd32fc8/doc/leaderf.txt#L523-L553