gpt4 book ai didi

vim - 如何忽略 VIM 键映射命令系列中的错误?

转载 作者:行者123 更新时间:2023-12-03 19:24:33 25 4
gpt4 key购买 nike

我正在编辑线移动的键映射如下:

vnoremap <silent> <C-j> :m '>+1<CR>gv
vnoremap <silent> <C-k> :m '<-2<CR>gv

他们应该上下移动行块并且在大多数情况下工作正常,除了在文件的顶部和底部。

当我选择第 1 2 行并输入 ctrl-k 时,当然,它不能再向上移动,而预期的行为是第 1 2 行在视觉模式下仍然是高亮显示。

目前的情况是,第 1 2 行不再突出显示。我知道那是因为 ":m '<-1"失败了,那么 gv 将不会被执行。

所以我的问题是如何忽略这个错误以确保 gv 无论如何执行?或者其他一些解决方案?

请注意,我知道一个解决方案 linemovement.vim。它在两个单独的命令和一些函数中运行这些。虽然我认为这应该是一个轻量级的代码。

最佳答案

您需要 :silent! 来抑制输出并跳过错误:

vnoremap <C-j> :<C-u>silent! '<,'>m '>+1<CR>gv
vnoremap <C-k> :<C-u>silent! '<,'>m '<-2<CR>gv
  • <C-u> 删除 Vim 自动插入的“选择范围”,因为 :silent 不接受范围。
  • 我们在 '<,'> 之前添加 :move 以便它仍然适用于视觉选择。

  • 这是应用于我的这些映射的增强(添加自动缩进)版本的修复程序:
    nnoremap ,<Up>   :<C-u>silent! move-2<CR>==
    nnoremap ,<Down> :<C-u>silent! move+<CR>==
    xnoremap ,<Up> :<C-u>silent! '<,'>move-2<CR>gv=gv
    xnoremap ,<Down> :<C-u>silent! '<,'>move'>+<CR>gv=gv

    谢谢你的想法。

    关于vim - 如何忽略 VIM 键映射命令系列中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071935/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com