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

时间:2016-10-06 11:46:01

标签: vim vim-plugin jetbrains-ide 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相同但保留当前光标位置。
  13. 我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

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

您可以手动将这些映射添加到~/.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

选择模式也是there are mappings

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| 

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

答案 1 :(得分:0)

只是补充@pochemuto 的回答:现在视觉模式映射似乎起作用了。这是我正在使用的配置 - 请注意,我还添加了 m 命令,这也是我首先使用 vim-easyclip 的原因。

nnoremap d "_d
xnoremap d "_d

nnoremap dd "_dd

nnoremap D "_D
xnoremap D "_D

nnoremap x "_x
xnoremap x "_x

nnoremap m d
nnoremap mm dd
xnoremap m d