【问题标题】:How do I get the EasyClip vim plugin like functionality in Ideavim plugin of Jetbrains?如何在 Jetbrains 的 Ideavim 插件中获得类似 EasyClip vim 插件的功能?
【发布时间】:2017-02-15 03:34:12
【问题描述】:

我希望将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 相同,但保留当前光标位置。

我该怎么做?

【问题讨论】:

  • 请记住,vim 寄存器与您的操作系统剪贴板不同。如果你的意思是注册,我相信你就是做不到,很遗憾

标签: vim vim-plugin jetbrains-ide ideavim


【解决方案1】:

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插件的问题。

【讨论】:

    【解决方案2】:

    只是为了补充@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
    

    【讨论】:

      猜你喜欢
      • 2020-08-11
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多