Nmap键映射在Vim/Cscope中无法使用

3
我正在使用带cscope的ubuntu下的vim(7.3)。:cs find命令可以正常工作,但我想使用一些按键绑定,所以我下载了cscope_maps.vim并按照这里的教程进行安装。然而,无论我把vim文件放在哪个位置,文件中定义的按键映射都无法工作!例如,我得到一个映射为:

nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>

当我将光标移动到c符号上并按下[CTRL]+[\]+s时,什么都没有发生!有人知道原因和如何解决吗?谢谢。

:h cscope Vim应该内置此功能。 - krystah
1
那是 ctrl+\ 然后 s - romainl
5个回答

7

尝试隔离问题。首先,在运行vim时,尝试执行以下操作:

:nmap , :echo "hello"<CR>

然后键入,。假设这个有效,请尝试你实际想要的组合键,而不是,。(当你写[CTRL]+[\]+s时,你同时使用了CTRL和\键,对吗?)如果那个有效,那么尝试从教程中使用实际的cscope命令。

接下来,尝试在你的vimrc文件中添加一个简单的nmap命令。那个有效吗?

你应该能够使用以下命令加载脚本

:source path/to/cscope_maps.vim

如果这样做有效,但是仅仅将文件放入插件目录中不行,请尝试:
:set runtimepath?

查看正在搜索插件的目录,并阅读

:help load-plugins
< p >(在:help startup下的第4步),由于其他原因,它们可能不会被加载。 < /p >

谢谢您的回复。我尝试了您说的方法,发现三键映射不起作用。所以我将映射更改为两个键,通过用代表键“.”的“<leader>”替换“<C->”来实现。现在它可以正常工作了! - eaglesky
你刚刚把“<C->”替换成了“<leader>”吗? - nom-mon-ir

2

我是一个有用的助手,可以为您进行文本翻译。

我遇到了同样的问题,通过修改 cscope_maps.vim 文件,帮助我解决了这个问题。

默认情况下,Cscope_maps.vim 文件提供以下映射:

nmap <C-\>s :cs find s =expand("")
nmap <C-\>g :cs find g =expand("")
nmap <C-\>c :cs find c =expand("")
nmap <C-\>t :cs find t =expand("")
nmap <C-\>e :cs find e =expand("")
nmap <C-\>f :cs find f =expand("")
nmap <C-\>i :cs find i ^=expand("")$
nmap <C-\>d :cs find d =expand("")

在Ubuntu 14.04中,<C-\>无法使用,所以我将其替换为z。

nmap zs :cs find s =expand("")
nmap zg :cs find g =expand("")
nmap zc :cs find c =expand("")
nmap zt :cs find t =expand("")
nmap ze :cs find e =expand("")
nmap zf :cs find f =expand("")
nmap zi :cs find i ^=expand("")$
nmap zd :cs find d =expand("")

0

Ctrl + s 组合键在我使用 VNC 查看器连接 Mac 时无法使用。因此,我将其替换为其他一些组合键,例如 f + s,它们没有被用于其他任何操作。


0
同样的事情也发生在我身上。我想这是因为当时我保存了HTML页面而不是复制页面内容导致了cscope_maps.vim文件出现了一些明显的错误,即使纠正了最初的错误,该文件中提到的键位映射也已经被HTML脚本修改了。因此,我建议你只需从上面的链接中复制cscope_maps.vim的内容到文件中,而不是下载整个网页。

0

默认情况下,Vim 在映射中只会等待 1 秒钟的时间来接收每个按键。对于这些组合键来说,这可能太短了。

在我将以下行添加到 vimrc 后,“CTRL + \" 就可以使用了。

set timeoutlen=4000 " in milliseconds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接