【深度求助】vim能不能把一些快捷键关闭

Vim、Emacs配置和使用
回复
liliwang
帖子: 41
注册时间: 2007-10-08 1:05

【深度求助】vim能不能把一些快捷键关闭

#1

帖子 liliwang » 2011-09-18 3:16

输入词组的最后一个大写字母后总是习惯性的按j,k键,这个时候CapsLock还开着,汗,这下就是按成J,K了,光标直接乱跳。。。
能不能把J,K快捷键关闭或禁掉?

大家平时写代码的时候遇到这问题都怎么办的?都来说说~~

想到一个办法,每次按Esc键以后都强制关闭CapLock键,只是不知道怎么搞,大虾求助啊
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 【深度求助】vim能不能把一些快捷键关闭

#2

帖子 fanhe » 2011-09-18 4:54

代码: 全选

nnoremap J <Nop>
nnoremap K <Nop>
这就是关了快捷键

用惯 vim 的人一般不会用 capslock

不清楚 vim 有命令关闭 capslock的
我自己的解决方案是自己写个函数,把光标前的单词全部切换大小写
liliwang
帖子: 41
注册时间: 2007-10-08 1:05

Re: 【深度求助】vim能不能把一些快捷键关闭

#3

帖子 liliwang » 2011-09-18 4:56

研究了下,ubutun的键盘布局里面有<按shift取消大写锁定>选项,如何把这个shift改成esc啊,有知道的朋友吗
liliwang
帖子: 41
注册时间: 2007-10-08 1:05

Re: 【深度求助】vim能不能把一些快捷键关闭

#4

帖子 liliwang » 2011-09-18 5:00

fanhe 写了:

代码: 全选

nnoremap J <Nop>
nnoremap K <Nop>
这就是关了快捷键

用惯 vim 的人一般不会用 capslock

不清楚 vim 有命令关闭 capslock的
我自己的解决方案是自己写个函数,把光标前的单词全部切换大小写
谢谢~饭盒兄~

难道你是先写小写字母再把这些小写字母自动转成大写的?有道理~~

能贴一下函数不?
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 【深度求助】vim能不能把一些快捷键关闭

#5

帖子 fanhe » 2011-09-18 13:08

[vim]"写 C 时麻烦的宏定义大写问题,解决!
inoremap <silent> <expr> <C-y>
\pumvisible()?"\<C-y>":"\<C-r>=<SID>ToggleCase()\<CR>"
function! s:ToggleCase() "{{{
let sLine = getline('.')
let nEndIdx = col('.') - 2
let sWord = matchstr(sLine[: nEndIdx], '\zs\k*\ze$')
if sWord ==# ''
return ''
endif

if sWord =~# '[a-z]'
call setline(line('.'), substitute(sLine[: nEndIdx], '\zs\k*\ze$',
\ toupper(sWord), '') . sLine[nEndIdx+1 :])
else
call setline(line('.'), substitute(sLine[: nEndIdx], '\zs\k*\ze$',
\ tolower(sWord), '') . sLine[nEndIdx+1 :])
endif

return ''
endf
"}}}
[/vim]

我用 <C-y> 当快捷键,你可以换成其他
也可以用普通模式的 gUb 和 gub,反正这段代码我用很久了,写 c 时那些宏,大写到我斯巴达
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 【深度求助】vim能不能把一些快捷键关闭

#6

帖子 lilydjwg » 2011-09-18 16:41

从来不用 Caps Lock 的路过~
liliwang
帖子: 41
注册时间: 2007-10-08 1:05

Re: 【深度求助】vim能不能把一些快捷键关闭

#7

帖子 liliwang » 2011-09-18 21:58

fanhe 写了:[vim]"写 C 时麻烦的宏定义大写问题,解决!
inoremap <silent> <expr> <C-y>
\pumvisible()?"\<C-y>":"\<C-r>=<SID>ToggleCase()\<CR>"
function! s:ToggleCase() "{{{
let sLine = getline('.')
let nEndIdx = col('.') - 2
let sWord = matchstr(sLine[: nEndIdx], '\zs\k*\ze$')
if sWord ==# ''
return ''
endif

if sWord =~# '[a-z]'
call setline(line('.'), substitute(sLine[: nEndIdx], '\zs\k*\ze$',
\ toupper(sWord), '') . sLine[nEndIdx+1 :])
else
call setline(line('.'), substitute(sLine[: nEndIdx], '\zs\k*\ze$',
\ tolower(sWord), '') . sLine[nEndIdx+1 :])
endif

return ''
endf
"}}}
[/vim]

我用 <C-y> 当快捷键,你可以换成其他
也可以用普通模式的 gUb 和 gub,反正这段代码我用很久了,写 c 时那些宏,大写到我斯巴达
多谢饭盒兄~~~
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: 【深度求助】vim能不能把一些快捷键关闭

#8

帖子 Fermat618 » 2011-09-20 19:00

lilydjwg 写了:从来不用 Caps Lock 的路过~
现在心疼小指,开始用了,不过用完立即就关掉。
如果能找到关掉Capslock的命令,用Vim的autocmd来自动调用一下也不错。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 【深度求助】vim能不能把一些快捷键关闭

#9

帖子 lilydjwg » 2011-09-20 22:47

Fermat618 写了:
lilydjwg 写了:从来不用 Caps Lock 的路过~
现在心疼小指,开始用了,不过用完立即就关掉。
如果能找到关掉Capslock的命令,用Vim的autocmd来自动调用一下也不错。
大量大写时我都是先写成小写再转的。更多的情况是可以补全。

要关掉 Caps Lock 很简单,用 xdotools 或者 xmacro 都可以,自己用 Xtest 写个程序也行。
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: 【深度求助】vim能不能把一些快捷键关闭

#10

帖子 Fermat618 » 2011-09-20 23:07

lilydjwg 写了:
Fermat618 写了:
lilydjwg 写了:从来不用 Caps Lock 的路过~
现在心疼小指,开始用了,不过用完立即就关掉。
如果能找到关掉Capslock的命令,用Vim的autocmd来自动调用一下也不错。
大量大写时我都是先写成小写再转的。更多的情况是可以补全。

要关掉 Caps Lock 很简单,用 xdotools 或者 xmacro 都可以,自己用 Xtest 写个程序也行。
啊,你在就是好啊,我查了半天的google也没查到。其间还被重置了很多次。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
回复