如何让 Neovim 的 'e' 地图多出一个位置?

How can I make Neovim's 'e' map make an extra position?

我正在尝试用 :nnoremap e mynewcommand 重新映射 'e' 键绑定,但我对如何使当前的“词尾”完成一个额外的位置有点迷茫。

例如,现在如果我有 word1 Xword2 word3(X 是当前位置),它在这里结束:word1 wordX word3

有没有办法重新映射它,使其在单词结尾 + 1 个位置结束?像这样:word1 word2X word3

谢谢!

Edit1:出于某种奇怪的原因,在进行重新映射时::nnoremap <S-l> e 非常有效 - 但是,:nnoremap <S-j> b 不起作用。有人知道吗?

Edit2:根据要求,这是我的 vim.init:

:nnoremap t r
:nnoremap <SPACE> <INSERT>
:vnoremap i <UP>
:vnoremap <SPACE> <INSERT>
:nnoremap i <UP>
:nnoremap k <DOWN>
:nnoremap j h
:nnoremap <S-l> e 
:nnoremap <S-j> b 
:nnoremap a <S-A>
:nnoremap vv <S-V>
:vnoremap k <DOWN>
:vnoremap j <LEFT>
:nnoremap dw daw
:inoremap jh <Esc>

" Settings.

set nocompatible
set showmatch
set ignorecase
set tabstop=4
set softtabstop=4
set expandtab
set shiftwidth=4
set autoindent
set number 
set clipboard=unnamedplus
set ttyfast

" Vim-plug (Plugin Manager)

call plug#begin()
Plug 'itchyny/lightline.vim'
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
call plug#end()

First: Vim(和 Neovim)没有“地图”,所以你所做的不是“重新映射”,而是“映射”(或者“地图”,如果你真的想要的话)。

其次:正如有人已经指出的那样,f<Space>已经满足了您的需求,因此您可能不应该在这上面花费太多精力。

第三<S-l><S-j>是令人费解和不必要的表达LJ的方式。保持配置简单。

第四:help J:help L 本身就是两个非常有用的命令,因此您应该认真考虑覆盖它们的相对好处。尤其是对于像这样微不足道的事情。

第五条nnoremap <key> e 中的 可读性不是很好,仓促格式化后很可能会消失。您应该考虑这些替代符号:

nnoremap <key> e<Space>
nnoremap <key> el
nnoremap <key> e<Right>

或者甚至:

nnoremap <key> f<Space>

第六条:你描述的方式不是很清楚:

word1 Xword2 word3
word1 wordX word3

2去哪儿了?光标究竟在哪个字符上?你能以更明确的方式重写它吗?类似于:

当前行为:

word1 word2 word3
     ^               " position of the cursor before e
          ^          " position of the cursor after e

期望的行为:

word1 word2 word3
     ^               " position of the cursor before <key>
           ^         " position of the cursor after <key>

Seventh:我可以,有点,理解对 nnoremap L e<Space> 的渴望,因为希望光标落在当前单词之后似乎是一个合理的事情.你可能想在那里放一些东西,或者插入一个括号,或者其他什么。但我无法想象一个足以证明 nnoremap J b<Space> 合理的场景。什么,你到底想用那个映射做什么?你想解决什么问题?而且,更重要的是,“不起作用”是什么意思?

您是否试图通过将光标停在单词之前来镜像您的L映射?由于 <Space> 将光标向右移动,因此 b<Space> 显然不起作用,但以下可能:

nnoremap <key> b<Left>
nnoremap <key> bh
nnoremap <key> b<BS>

或者甚至:

nnoremap <key> F<Space>