我试图重新映射'e‘键绑定与:nnoremap e mynewcommand,但我有点迷失了如何使当前的“字尾”完成一个额外的位置。
例如,现在如果我有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()发布于 2022-04-26 07:04:11
First:Vim (和Neovim)没有“映射”,所以您所做的不是“映射”,而是“映射”(或者“映射”,如果您真的想要的话)。
第二:正如有人已经指出的,f<Space>已经满足了您的需要,所以您可能不应该为此花费那么多精力。
第三代:<S-l>和<S-j>是复杂而不必要的表达方式,可以说是L和J。保持配置简单。
第四::help J和:help L本身就是两个非常有用的命令,因此您应该仔细考虑重写它们的相对好处。尤其是像这样琐碎的事情。
第五版:in nnoremap <key> e的可读性不强,可能会在草率格式化后消失。您应该考虑这些替代符号:
nnoremap <key> e<Space>
nnoremap <key> el
nnoremap <key> e<Right>甚至:
nnoremap <key> f<Space>第六:您解释您的情况的方式不太清楚:
word1 Xword2 word3
word1 wordX word32去哪儿了?光标到底在哪个字符上?你能用更明确的方式重写它吗?类似于:
目前的行为:
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>第七:我可以理解对nnoremap L e<Space>的需求,因为希望光标在当前单词之后立即着陆似乎是一件合理的事情。您可能想要在那里放置一些东西,或者插入一个括号,或者其他什么。但我无法想象一种足够普遍的情况,足以证明nnoremap J b<Space>是合理的。你到底想用那张地图做什么?你想解决什么问题?更重要的是,“不起作用”意味着什么?
您是否试图通过在word之前登陆光标来镜像您的L映射?由于<Space>将光标移向右侧,所以b<Space>显然无法工作,但以下可能是:
nnoremap <key> b<Left>
nnoremap <key> bh
nnoremap <key> b<BS>甚至:
nnoremap <key> F<Space>https://stackoverflow.com/questions/72006869
复制相似问题