如何通过自定义移动保持 Vim 的视觉选择?

如何通过自定义移动保持 Vim 的视觉选择?

我的 vim rc 中有一些移动实用程序,可以帮助我更快地在文件中导航,但我还想在视觉选择时使用它们。这是我当前的键绑定:在 ~/.vimrc 中

nnoremap <C-h> b
nnoremap <C-l> w
nnoremap <C-j> 5j
nnoremap <C-k> 5k
nnoremap <Tab> :call Tab() <CR>

function! Tab()
    let col = col(".")
    let line = line(".")
        normal! %
    if (col == col(".") && line == line("."))
        normal! $
    endif
endfunction

有没有办法使用这些实用程序进行视觉选择?

答案1

只需添加相应的视觉模式映射:

vnoremap <C-h> b
vnoremap <C-l> w
vnoremap <C-j> 5j
vnoremap <C-k> 5k
vnoremap <Tab> :<c-u>call Tab()<CR>gv

注意,在可视模式下进行映射需要做一些额外的工作<Tab>。即,在进入 :-command 模式时清除自动可视边界标记,然后在调用该函数后重新选择可视区域。

相关内容