gpt4 book ai didi

coffeescript - 在vim中映射shift键

转载 作者:行者123 更新时间:2023-12-05 00:00:20 24 4
gpt4 key购买 nike

在 VIM 中映射 Shift 键时遇到问题。我希望 Ctrl+L 的行为不同于 Ctrl+Shift+L
所以我有这个

" for insert mode remap <c-l> to:
" Insert a hash rocket for ruby
" Insert a -> for php
" for coffee the shift key decides

function! SmartHash(...)
let shift = a:0 > 0
let ruby = &ft == 'ruby'
let php = &ft == 'php'
let coffee = &ft == 'coffee'

if php
return "\->"
end

if coffee
return shift ? "\ =>\n" : "\ ->\n"
end

if ruby
return "\ => "
end

return ""

endfunction

imap <c-l> <c-r>=SmartHash()<cr>
imap <C-S-L> <c-r>=SmartHash(1)<cr>
...但它只是触发第二个映射,无论我是否按下 Shift 键。
基于 accepted answer 更新
" for insert mode remap <c-l> to:
" Insert a hash rocket for ruby
" Insert a -> for php and coffeescript
" double tapping does alternate symbol for php and coffescript
function! SmartHash(...)
let alt = a:0 > 0
let ruby = &ft == 'ruby'
let php = &ft == 'php'
let coffee = &ft == 'coffee'

if php || coffee
return alt ? "\ =>\n" : "\ ->\n"
end

if ruby
return "\ => "
end

return ""

endfunction

imap <c-l> <c-r>=SmartHash()<cr>
imap <c-l><c-l> <c-r>=SmartHash(1)<cr>

最佳答案

由于键盘输入是在内部处理的方式,不幸的是,即使在 GVIM 中,这在今天也是不可能的。这是一个已知的痛点,也是 vim_dev 和 #vim IRC channel 上各种讨论的主题。

有些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使对于支持这个的终端中的控制台 Vim),并且已经提出了各种建议,cp。 http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

但截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在 future 的 Vim 8 主要版本中拥有它。

我通常通过使用 g 开始我的备用映射来解决这个问题。 ,例如<C-l>g<C-l> ,但这在插入模式下不起作用。在您的情况下,通过一些额外的逻辑,您可以创建第二个 <C-l>在同一位置更改之前插入的 ->=> ,以便您通过 <C-l> 获得第一个选择,第二个通过 <C-l><C-l> .

关于coffeescript - 在vim中映射shift键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10340470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com