如何执行以下操作:
zw
(类似于zl
但跳过单词)我有.vimrc
次设置set nowrap
。那是因为代码看起来比包装线好。但水平导航存在问题。
我注意到zl
(不要混淆l(L)和1)快捷方式,它向右移动(zh
向左)。
答案 0 :(得分:40)
您是否尝试过:help scroll-horizontal
?
您可以使用映射滚动,例如,向左或向右滚动20个字符:
map <C-L> 20zl " Scroll 20 characters to the right
map <C-H> 20zh " Scroll 20 characters to the left
如果不应用映射,您可以使用zL
将视图向右移动半屏宽度,并使用zH
向左移动。
关于你问题的第二部分:我不认为这是可能的。您可以拉动整行,将其粘贴到第二个(临时)缓冲区并滚动到那里。只要您只是阅读这些行,这就可以工作。一旦你想要改变某些东西就会出现问题。但这很麻烦......
答案 1 :(得分:6)
添加到其他答案中还要注意ze
和zs
,这意味着:将屏幕移至光标的左/右
在我下面粘贴助记符以进行滚动
还要查看键盘上h
和l
(以及t
和b
)的位置,以记住屏幕在哪里移动
+-------------------------------+
^ |
|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 |
+-------------------------------+
答案 2 :(得分:4)
使用shift +滚动键可以更快地通过文本
答案 3 :(得分:2)
为获得更舒适的滚动效果,类似于在插入模式下由ctrl-x,ctrl-e或ctrl-x,ctrl-y触发的滚动模式,这是我在vimrc中添加的内容:
nnoremap <silent> zh :call HorizontalScrollMode('h')<CR>
nnoremap <silent> zl :call HorizontalScrollMode('l')<CR>
nnoremap <silent> zH :call HorizontalScrollMode('H')<CR>
nnoremap <silent> zL :call HorizontalScrollMode('L')<CR>
function! HorizontalScrollMode( call_char )
if &wrap
return
endif
echohl Title
let typed_char = a:call_char
while index( [ 'h', 'l', 'H', 'L' ], typed_char ) != -1
execute 'normal! z'.typed_char
redraws
echon '-- Horizontal scrolling mode (h/l/H/L)'
let typed_char = nr2char(getchar())
endwhile
echohl None | echo '' | redraws
endfunction
这样,您可以在方便的时候平滑滚动(使用h或l)或快速滚动(使用H或L),而无需每次都反复按z。您只需按一次z即可触发“水平滚动模式”,该模式在您按任意其他键时立即停止。
答案 4 :(得分:0)
对于您的问题的第一部分,如评论中所述,zL
和zH
是完美的,因此我将在此处添加。
zL Move the view on the text half a screenwidth to the
right, thus scroll the text half a screenwidth to the
left. This only works when 'wrap' is off.
zH Move the view on the text half a screenwidth to the
left, thus scroll the text half a screenwidth to the
right. This only works when 'wrap' is off.