【问题标题】:How do I stop my cursor from moving in vim when executing a :noremap?执行 :noremap 时如何阻止光标在 vim 中移动?
【发布时间】:2012-12-31 05:06:41
【问题描述】:

我的 .vimrc 中有很多这样的:

:noremap <F1> :set hls!<CR> :echo "hilight seach (hls) =" &hls<CR>

(很高兴有自动缩进、行号、忽略大小写等,只需按一下按钮即可切换。)

但是在执行这些操作时会出现一种奇怪的行为。光标向右移动一列。如果我在一行的末尾,光标将移动到下一行的开头。为什么会这样,我该如何预防?

这是 vim 7.3.429,但我也在 7.2.411 中看到它。

谢谢

【问题讨论】:

  • 也可以使用:nnoremap &lt;f1&gt; :set hls! hls?&lt;cr&gt;

标签: vim remap


【解决方案1】:

gpojd 是正确的,空间导致您的移动问题。也许您可能对更简单的切换映射感兴趣?

nnoremap <f1> :set hls! hls?<cr>
nnoremap <f2> :set spell! spell?<cr>
nnoremap <f3> :set list! list?<cr>

使用set hls? 将显示'hlsearch' 的当前值。因为:set 可以一次设置多个设置,所以您切换值然后要求显示当前值。

【讨论】:

    【解决方案2】:

    问题在于&lt;CR&gt;:echo 之间的空格。删除它,它应该可以工作。

    :noremap <F1> :set hls!<CR>:echo "hilight seach (hls) =" &hls<CR>
    

    【讨论】:

    • 啊!我以为我已经尝试了所有不必要的空格排列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多