11
11

More than 5 years have passed since last update.

atomのvim-modeのyank時にクリップボードにも入るようにする

Last updated at Posted at 2014-12-25

2015/02/20 追記

vim-modeの0.33.0でクリップボードと無名レジスタの共有が追加されました。

現在は下記の設定を行う必要はありません。

はじめに

現在のところatomのvim-modeのyankはクリップボードと共有できません。
(atom: 0.165.0, vim-mode:0.21.0時点)

本家vimだとvimrcにset clipboard+=unnamedと書いておくと、yankした値はclipboardと共有できます。

vimエディタからクリップボードを利用する。 — 名無しのvim使い

vimで普段からこの設定に慣れていると、atomで使えないのに非常にストレスが溜まります。

これをなんとかしてみました。

init.coffeeにコマンドを定義する

init.coffeeとは

init.cofeeはatom起動時に、一番最後に読み込まれる設定ファイルです。

Customizing Atom

When Atom finishes loading, it will evaluate init.coffee in your ~/.atom directory, giving you a chance to run arbitrary personal CoffeeScript code to make customizations.

一番最後に適用されるのでここでvim-modeのコマンドを呼ぶこともできそうです。

ここに自分用のyankを作ることにします。

書いてみた

  • init.coffee
atom.workspaceView.eachEditorView (editorView) ->
  editorView.command 'my-command:yank', ->
    editorView.trigger('core:copy')
    editorView.trigger('vim-mode:yank')

コマンド内容は'core:copy'と'vim-mode:yank'を2つやるってだけです。非常にシンプルです。

atom.workspaceView.eachEditorView (editorView)でeachしているeditorViewに紐付けると、editor viewでしか使えないコマンド、という定義ができるようです。

例えば、このコマンドはtree viewでは使えません。

githubの中の人の公開しているinit.coffeeを見たりしてこの記述に辿り着いたのですが、現在公式にはこのAPIは書いていない気がします。

(見落としてるだけかな?)

keybindを定義する

keymap.csonで先ほど定義したコマンドを割り当てます。

  • keymap.cson
'.editor.vim-mode:not(.insert-mode)':
  'y'  : 'my-command:yank'

すでに登録されているキーバインドをkeymap.csonに書いた場合は上書きになります。

この設定で、vim-mode本来のyankは使わずに、自分で定義したmy-command:yankを使うように上書きしています。

動作検証

init.coffeeは起動時に読み込まれるので、atomを再起動する必要があります。

yでyankした値がclipboardに入っていれば成功です!

終わりに

init.coffeeの書き方がわからなくて苦労してしまいましたが、なんとか動きました!

もっと良いやり方があるかもしれません。

ご存知の方は教えてください!

ところでatomのvim-modeにはこんなissueが上がっていた

なるほど、確かに"*yyでyankすればクリップボードに入りますね!

こうすれば*レジスタに入るので共有できるということですね。

でも毎回打つの面倒なので却下しました。

(設定でyank時に使うレジスタ変更できるPR出すのが正解ですね!だれかおねg)

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11