如何让 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>
是令人费解和不必要的表达L
和J
的方式。保持配置简单。
第四::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>
我正在尝试用 :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>
是令人费解和不必要的表达L
和J
的方式。保持配置简单。
第四::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>