是否可以选择在正常模式下使用选项始终使用小型大写字母?

时间:2011-12-18 21:19:24

标签: vim

我是少数仍然经常使用大写锁定的人之一(哦,恐怖!! aaaah:O)

然而问题是我经常忘记关闭它们,然后切换到Vim的正常模式,而dd的含义与DD不同。

Vim中是否有一个选项强制它在正常模式下执行命令总是因为它们是用小型大写字母输入的?因此,如果我DD将其视为dd

2 个答案:

答案 0 :(得分:1)

请参阅:he i_CTRL-^

要使用Ctrl- ^切换“Caps Lock”,请将以下内容放在vimrc中(或者只是在Vim中划线,然后键入:@“执行它们):

" Execute 'lnoremap x X' and 'lnoremap X x' for each letter a-z.
for c in range(char2nr('A'), char2nr('Z'))
  execute 'lnoremap ' . nr2char(c+32) . ' ' . nr2char(c)
  execute 'lnoremap ' . nr2char(c) . ' ' . nr2char(c+32)
endfor

由于这个想法是为了让你忘记封锁,所以在退出插入模式时也可能需要自动关闭这种特殊模式:

" Kill the capslock when leaving insert mode.
autocmd InsertLeave * set iminsert=0

请注意使用“iminsert”选项。按 C - ^ 实际上会在0和1之间切换此选项,这会自动启用或禁用语言地图。相关选项“imsearch”在输入搜索模式时控制映射。

使用键映射

另一个也会导致Ctrl- ^切换“Caps Lock”的过程是使用键映射(这不是映射;请参阅:help mbyte-keymap)。

使用'keymap'选项可以保持vimrc干净,并在此“Caps Lock”模式下为状态行添加指示符。

详见:wikia

答案 1 :(得分:1)

有一个vim插件capslock.vim : Software Caps Lock,它使用映射,类似于第一个解决方案,但它也可以在普通模式下用作Caps Lock。

默认情况下,此插件会在退出插入模式时自动禁用Caps Lock行为。 可以使用let g:capslock_persist = 1更改此内容。

您可以设置用于激活插件的密钥,例如

imap <C-L>     <Plug>CapsLockToggle
nmap <Leader>l <Plug>CapsLockToggle