我是一个狂热的vim用户,并且最近开始编写一些SQL代码.我喜欢在CAPS中编写我的SQL语句,有时忘记切换CapsLock'关闭',然后在我意识到发生了什么之前,我会迅速对我的代码造成严重破坏.
到目前为止,我还没有找到任何方法来判断CapsLock键是否只是在看我的键盘(这需要我远离屏幕,我认为这是一个很大的延迟).
理想情况下,我希望vim在CapsLock"开启" 时自动更改我的背景颜色,但我愿意接受其他一些屏幕上的CapsLock状态指示作为妥协.
您能得到的最接近的是肯特的答案。Vim 无法看到CapsLock(或NumLock、 或ScrollLock,或任何其他修饰键本身),因为这些键的状态不是通过终端发送的。
请注意,理论上,gVim 可以看到这些修饰符,但实际上却看不到。gVim 的键盘处理在许多其他方面都优于 vim。
建议将小写字母映射到大写字母的人是在正确的轨道上,但我们需要添加更多细节.诀窍是将SQL关键字映射到大写.然后你可以用小写字母输入它们,vim会把它们转换成大写字母.这是使用缩写而不是映射完成的.例如,如果您创建缩写
:iab ATT American Telephone and Telegraph
Run Code Online (Sandbox Code Playgroud)
然后,每当您在代码中键入"ATT"时,只要您点击空格键,Vim就会自动将其翻译为"美国电话和电报".(试试吧!很有趣!)
因此,创建一个新文件并开始输入所有SQL关键字的缩写.
iab select SELECT
iab like LIKE
iab where WHERE
...
Run Code Online (Sandbox Code Playgroud)
由于您只想在编辑SQL源时应用这些缩写,因此请将此文件保存到〜/ .vim/after/ftplugin/sql.vim当Vim检测到已打开SQL文件时,将执行此文件中的命令.
文件类型检测仅在您打开时才有效,因此请确保您的.vimrc包含以下行:
set nocompat
filet detect plugin on
Run Code Online (Sandbox Code Playgroud)
一旦你完成这项工作,你应该节省时间,并且不必一直按住shift键来减少腕管!
我能给你的最好的办法就是让 vim 在 vim 中按下 CAPSLOCK 键时切换背景颜色。
Vim 无法单独检测 CAPSLOCK 键。我可以为您提供一个映射,以便您可以使用其他一些键(在本例中为 F3)来充当插入模式的 CAPSLOCK 键,并在全大写打开时更改背景颜色。希望这将为您提供所需的功能。
将以下内容放入 ~/.vimrc 或相应的 ~/.vim/ftplugin/ <filetype> .vim 中:
" let the case be toggled in normal mode
map <expr> <F3> ToggleInsertCase()
" let the case be toggled in insert mode
imap <expr> <F3> ToggleInsertCase()
let toUpper = 0
func! ToggleInsertCase()
let g:toUpper = 1 - g:toUpper
if (g:toUpper == 1)
highlight Normal ctermbg=Blue " the background color you want when uppercased
" convert all the letters to uppercase in insert mode
let i = char2nr('a')
while i <= char2nr('z')
let c = nr2char(i)
exe 'inoremap' c toupper(c)
let i = i + 1
endwhile
else
highlight Normal ctermbg=Black " the background color you want normally
" let letters be as normal in insert mode
let i = char2nr('a')
while i <= char2nr('z')
let c = nr2char(i)
exe 'iunmap' c
let i = i + 1
endwhile
endif
" don't insert anything when this function is called in normal mode
return ""
endfunc
Run Code Online (Sandbox Code Playgroud)
这借鉴了Tim Pope 的 capslock.vim的一些内容。
如果你真的想为此使用 CAPSLOCK 键,根据你的平台,有很多免费应用程序可以让你将 CAPSLOCK 键重新映射到其他键,这样你就可以设置它,以便当你按下 CAPSLOCK 时,vim(和其他一切)得到F3。管他呢。但这会干扰其他应用程序获取 CAPSLOCK 键(除非键重新映射器应用程序很聪明),因此这可能会很麻烦。
归档时间: |
|
查看次数: |
2831 次 |
最近记录: |