如何在 Jetbrains 的 Ideavim 插件中获得类似 EasyClip vim 插件的功能?

Vik*_*ngh 5 vim jetbrains-ide vim-plugin ideavim

我希望EasyClip vim 插件的以下功能合并到 ideavim 插件中:

  1. dd - 删除该行并且不更改剪贴板

  2. D - 从光标删除到行尾并且不更改剪贴板

  3. dD - 删除除换行符之外的行内容(即使其空白)并且不更改剪贴板

  4. x - 删除光标下的字符并且不更改剪贴板

  5. s - 删除光标下的字符然后进入插入模式并且不更改剪贴板

  6. S - 删除光标下的行然后进入插入模式并且不更改剪贴板

  7. c - 在给定区域上方进入插入模式并且不更改剪贴板

  8. cc - 在当前行上方进入插入模式并且不更改剪贴板

  9. C - 进入从光标到行尾的插入模式,并且不更改剪贴板

  10. s - 用指定的寄存器(如果未指定,则使用默认寄存器)替换给定的运动。
  11. ss - 用指定的寄存器(如果未指定,则使用默认寄存器)替换当前行。
  12. gs - 与 s 相同,但保留当前光标位置。

我怎样才能做到这些?

小智 2

EasyClip 只是将按键序列重新映射到相同的功能,但重定向到“黑洞寄存器” _

映射存在于https://github.com/svermeulen/vim-easyclip/blob/21b6dcd7bb25697263156473d6eb9ec0420b97ee/autoload/EasyClip/BlackHole.vim#L22-L52列中的第一项是源键,第二项是目标,第三项是模式列表。n表示普通模式,对应nnoremap命令,x表示可视模式,对应xnoremap。例如,['S', '"_S', 'nx']将被翻译成两个命令:

nnoremap S "_S
xnoremap S "_S
Run Code Online (Sandbox Code Playgroud)

您可以手动将这些映射添加到~/.ideavimrc. 完整的映射列表是:

nnoremap d "_d
xnoremap d "_d

nnoremap dd "_dd

nnoremap dD 0"_d$

nnoremap D "_D
xnoremap D "_D

nnoremap x "_x
xnoremap x "_x

nnoremap c "_c
xnoremap c "_c

nnoremap cc "_S
nnoremap C "_C
xnoremap C "_C
nnoremap s "_s
xnoremap s "_s
nnoremap S "_S
xnoremap S "_S
Run Code Online (Sandbox Code Playgroud)

还有选择模式的映射

snoremap H <c-o>"_cH
snoremap I <c-o>"_cI
snoremap J <c-o>"_cJ
snoremap K <c-o>"_cK
snoremap L <c-o>"_cL
snoremap M <c-o>"_cM
snoremap N <c-o>"_cN
snoremap O <c-o>"_cO
snoremap P <c-o>"_cP
snoremap Q <c-o>"_cQ
snoremap R <c-o>"_cR
snoremap S <c-o>"_cS
snoremap T <c-o>"_cT
snoremap U <c-o>"_cU
snoremap V <c-o>"_cV
snoremap W <c-o>"_cW
snoremap X <c-o>"_cX
snoremap Y <c-o>"_cY
snoremap Z <c-o>"_cZ
snoremap [ <c-o>"_c[
snoremap \ <c-o>"_c\
snoremap ] <c-o>"_c]
snoremap ^ <c-o>"_c^
snoremap _ <c-o>"_c_
snoremap ` <c-o>"_c`
snoremap a <c-o>"_ca
snoremap b <c-o>"_cb
snoremap c <c-o>"_cc
snoremap d <c-o>"_cd
snoremap e <c-o>"_ce
snoremap f <c-o>"_cf
snoremap g <c-o>"_cg
snoremap h <c-o>"_ch
snoremap i <c-o>"_ci
snoremap j <c-o>"_cj
snoremap k <c-o>"_ck
snoremap l <c-o>"_cl
snoremap m <c-o>"_cm
snoremap n <c-o>"_cn
snoremap o <c-o>"_co
snoremap p <c-o>"_cp
snoremap q <c-o>"_cq
snoremap r <c-o>"_cr
snoremap s <c-o>"_cs
snoremap t <c-o>"_ct
snoremap u <c-o>"_cu
snoremap v <c-o>"_cv
snoremap w <c-o>"_cw
snoremap x <c-o>"_cx
snoremap y <c-o>"_cy
snoremap z <c-o>"_cz
snoremap { <c-o>"_c{
snoremap } <c-o>"_c}

snoremap <bs> <c-o>"_c
snoremap <space> <c-o>"_c<space>
snoremap \| <c-o>"_c| 
Run Code Online (Sandbox Code Playgroud)

不幸的是,视觉模式下的映射不起作用。我不知道为什么,也许问题出在 IdeaVim 插件上。