Answers:
vim
!)xdotool
或triggerhappy
。最后,显示您的大写锁定状态(无法在Vimscript中完成。)……
xev -q
,cat /proc/bus/input/devices
查找要查询的设备和/ evtest
或thd ... --dump /dev/input/event<#>
检查状态等信息。如果您绝对必须在系统范围内进行重新映射,请至少交换两个锁,例如caps <-> num-但是问题更是使人忘记了它的存在,因为如果您以前想要它,那么无论使用哪种地图,都将继续使用它。有在文件/用户/系统之前破坏Vim的风险。
confirm()
。另外,除了将大写锁定映射到ctrl外,还可以将其映射到Vim理解但未映射的键或组合,然后在插入/替换模式下手工或通过类似github.com/tpope/的方式模拟大写锁定。vim-capslock。您可能在Vim之外不需要它,但是如果需要,可以编写一个xmodmap脚本来还原您的更改,或者查看该程序是否支持自己的映射(并做笔记。)
另外:
Ctrl- y和Ctrl- e仅在将光标移出屏幕时才更改其位置。
:help CTRL-E
说Mnemonic: Extra lines.
Vim要求光标始终处于当前屏幕中,但是,您可以将当前位置滚动到书签,然后返回到原来的位置。
mg # This book marks the current position as g (this can be any letter)
<scroll around>
`g # return to g
Ctrl-O
进行一次非常出色的操作,而“后退,句号”则使您回到上次编辑的位置。
mg
,滚动,用标记位置,'g
就可以了。现在,您可以调用可配置的键来移动,这就像光标从未离开当前位置。Voilá!
这是我在vimrc中的解决方案:
"keep cursor in the middle all the time :)
nnoremap k kzz
nnoremap j jzz
nnoremap p pzz
nnoremap P Pzz
nnoremap G Gzz
nnoremap x xzz
inoremap <ESC> <ESC>zz
nnoremap <ENTER> <ENTER>zz
inoremap <ENTER> <ENTER><ESC>zzi
nnoremap o o<ESC>zza
nnoremap O O<ESC>zza
nnoremap a a<ESC>zza
这样光标将停留在屏幕中间,并且屏幕将向上或向下移动。
:set scrolloff=4
将要求光标始终与窗口的顶部或底部至少相隔4行,因此您始终至少要有一点上下文。
zEnter 确实满足了这个问题的要求。
它可以在zz无法正常工作的地方工作(在没有特殊.vimrc的Ubuntu 2016.04 LTS上为vim 7.4.1689)
有时,使用K和J键滚动文本很有用,因此我在.vimrc(也绑定到zs)中具有此“滚动模式”功能。
请参见scroll_mode.vim。
我的滚动助记符...
除其他答案外,还要注意ze
和zs
,其含义是:将屏幕移至光标的左/右(不移动光标)
+-------------------------------+
^ |
|c-e (keep cursor) |
|H(igh) zt (top) |
| ^ |
| ze | zs |
|M(iddle) zh/zH <--zz--> zl/zL |
| | |
| v |
|L(ow) zb (bottom) |
|c-y (keep cursor) |
v |
+-------------------------------+
还要查看键盘上h
and l
和t
and b
和(使用qwertz键盘)c-e
和c-y
(也可能是“ y”指向底部)在键盘上的位置,以记住屏幕的移动位置。