vim 在长线中水平导航

taor4pac  于 2022-11-11  发布在  其他
关注(0)|答案(6)|浏览(208)

如何执行以下操作:
1.快速向右移动,类似于zw(类似于zl,但跳过单词)
1.只移动光标所在的那一长行,文件的其余部分将保留在原来的位置
我有.vimrc设置set nowrap。这是因为代码看起来比换行更好。但是水平导航有一个问题。
我注意到zl(不要把l(L)与1混淆)的快捷键向右移动(zh向左移动)。

ncecgwcz

ncecgwcz1#

你试过:help scroll-horizontal吗?
例如,您可以使用Map来向左或向右滚动20个字符:

map <C-L> 20zl " Scroll 20 characters to the right
map <C-H> 20zh " Scroll 20 characters to the left

在不应用Map的情况下,您可以使用zL将视图向右移动半个屏幕宽度,使用zH将其向左移动。
关于你问题的第二部分:“我觉得这不太可能,你可以把整行都拽下来,然后粘贴到第二个缓冲区(暂存区),然后滚动到那里,只要你只是在阅读行就行了,一旦你想修改什么,问题就来了,但是很麻烦......”

baubqpgj

baubqpgj2#

除了其他答案外,还要注意zezs,它们的含义是:将屏幕移动到光标的左侧/右侧
下面我粘贴了我的滚动助记符,同时查看键盘上hl(以及tb)的位置,以记住屏幕移动的位置

+-------------------------------+
^                               |
|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                               |
+-------------------------------+
93ze6v8z

93ze6v8z3#

使用shift +滚动键快速浏览文本

kulphzqa

kulphzqa4#

为了更舒适地滚动,类似于在插入模式下通过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就可以触发“水平滚动模式”,只要你按下任何其他键,它就会停止。

k4emjkb1

k4emjkb15#

对于您问题的第一部分,如评论中所述,zLzH是完美的,因此我将在此处添加这一点。

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.
bis0qfac

bis0qfac6#

使用w向前滚动,使用b向后滚动。这可能是最简单的方法。

相关问题