Create React Appで作成したアプリケーションでSVG形式のロゴ等をクリック可能な要素として読み込む方法です。 HTMLのimgタグではonClick属性は無いため、クリック可能な要素とし…
IntelliJ IDEAにVimエミュレータ拡張Ideavimを設定したので概要を残しておきます。
最後に設定例を貼っておくので参考にして下さい。
IdeaVim
JetBrainsが直々に作っているIntelliJのIDE上で動くVimエミュレータです。
環境設定 > プラグイン
からインストールします。
Ideavim
https://plugins.jetbrains.com/plugin/164-ideavim
この時点で基本的なVim操作が行えるようになります。
.ideavimrc
.vimrcではなく、~/.ideavimrc
に置かれた設定を読み込むので作成しておきます。
日本語入力切り替えの自動化
Insertモードから抜けるときに自動的に半角英数に切り替えるプラグインです。
Ideavimとは別途プラグインからインストールします。
IdeaVimExtension
https://plugins.jetbrains.com/plugin/9615-ideavimextension
英数に切り替えるだけではなくInsertモードに戻ったら元の状態を復元するかなど、色々と設定可能です。
Normalモードに戻ったら必ず半角にしたい場合は set keep-english-in-normal
を.ideavimrcにセットすればOKです。
コマンド | 説明 |
---|---|
:set keep-english-in-normal | enable auto-switch feature |
:set keep-english-in-normal-and-restore-in-insert | restore input method when return insert mode. |
:set nokeep-english-in-normal-and-restore-in-insert | keep auto-switch feature, but doesn’t restore input method when return insert mode |
:set nokeep-english-in-normal | disable auto-switch feature |
Plugin
VimやNeovimのプラグインは動きません。
Ideavimがプラグインをエミュレートしてくれているプラグインだけ動きます。
プラグインは.vimrcにset *****
とプラグイン名をセットするだけで有効になります。
別途ダウンロードしてくる必要はありません。
一覧
https://github.com/JetBrains/ideavim/wiki/Emulated-plugins
万人におすすめなものを紹介します。
IdeaVim-EasyMotion
エディタ内の指定文字の場所にカーソルをジャンプできるEasyMotionです。
このプラグインだけ例外でIDEAのプラグインから追加する必要があります。
依存している別プラグインも自動的に追加されます。
IdeaVim-EasyMotion
https://plugins.jetbrains.com/plugin/13360-ideavim-easymotion
let mapleader="," set easymotion
サポートしているコマンド一覧
https://github.com/AlexPl292/IdeaVim-EasyMotion#supported-commands
NERDTree
お馴染みのファイルエクスプローラーですが、アレが出てくるのではなくIDE標準のエクスプローラーをNERDTreeのキーバインドで操作できるようになります。
surround
テキストオブジェクトの範囲を指定した文字で囲みます。
正直sandwichの方が嬉しいけど、あるだけで有り難いです。
multiple-cursors
マルチカーソルが使えるようになります。
commentary
gcc
で現在行をコメントアウトしたり、gc + motion
で指定した範囲をコメントアウト出来るようになります。
ReplaceWithRegister
gr
のオペレータが追加され、ヤンクしてRegisterに入っている値で指定した範囲を置き換えられます。
argtextobj
aa
やai
のテキストオブジェクトが追加され、メソッドの引数を1つ削ったり書き換えたりといった指定が可能になります。
highlightedyank
ヤンク対象がピカッと光ります。
IDEの操作をマップする
IDEの デバッグを実行する
などの操作をマップできます。
JetBrainではActionと呼ばれるようです。
マップするにはマップしたいActionのaction_id
が必要です。
調べ方
なんでも検索 (shift x 2)を開き、Track action Ids
と検索してトグルをオンにして有効化します。
有効化された状態でIDEでActionを実行すると右下に実行したActionとaction_idが表示されます。
マップ例
map <leader>d <Action>(Debug) " <Action>({action_id})
有志のプラグイン
JetBrainではなく有志が配布しているプラグインもいくつかあるようです。
IdeaVim-Sneak
https://plugins.jetbrains.com/plugin/15348-ideavim-sneak
Which-Key
https://plugins.jetbrains.com/plugin/15976-which-key
Q&A
ヤンクした内容をクリップボードにコピーして欲しい
set clipboard+=unnamedplus
uで一つ前に戻したときにVimと挙動が違うんだけど
仕様です。
おかしいでしょと公式にissueが挙がって既に9年ほどディスカッションを続けてるようですが未だCloseしていません。
Undo requires one more step if the cursor is not at the position where it was after undo
https://youtrack.jetbrains.com/issue/VIM-308
設定例
setting
set incsearch set ignorecase set smartcase set number set relativenumber set clipboard+=unnamedplus set keep-english-in-normal
map
let mapleader=" " " reload vimrc nnoremap <leader><leader> :source ~/.ideavimrc<cr> " leave insert inoremap jk <esc> " save file nnoremap <C-s> :update<cr> " delete buffer noremap <leader>q :bd<cr> " highlight off nnoremap <leader>; :nohlsearch<cr> " yank nnoremap Y y$ " paste nnoremap p ]p xnoremap p ]p " incremental nnoremap + <C-a> nnoremap - <C-x> " window nnoremap <C-h> <C-w>h nnoremap <C-l> <C-w>l nnoremap <C-k> <C-w>k nnoremap <C-j> <C-w>j " join nnoremap gJ J " cursor nnoremap J 5j nnoremap K 5k xnoremap J 5j xnoremap K 5k nnoremap 0 ^ nnoremap ^ 0 vnoremap 0 ^ vnoremap ^ 0 " tab nnoremap <C-n> gt nnoremap <C-p> gT " vim-asterisk" vnoremap * y/<C-r>0<cr> " debug map <leader>d <Action>(Debug) map <leader>r <Action>(RenameElement) map <leader>c <Action>(Stop) map <leader>z <Action>(ToggleDistractionFreeMode) map <leader>a <Action>(Annotate) map <leader>h <Action>(Vcs.ShowTabbedFileHistory) map <S-Space> <Action>(GotoNextError) map <leader>b <Action>(ToggleLineBreakpoint) map <leader>o <Action>(FileStructurePopup) map gh <Action>(ShowErrorDescription) map <C-w><C-o> <Action>(CloseAllEditorsButActive)
plugin
" enabled set easymotion set NERDTree set surround set multiple-cursors set commentary set ReplaceWithRegister set argtextobj set highlightedyank " easymotion map <leader>f <Plug>(easymotion-s) map <leader>j <Plug>(easymotion-j) map <leader>k <Plug>(easymotion-k) " NERDTree nmap <leader>e :NERDTreeFind<cr> nmap <leader>E :NERDTreeToggle<cr>
コメントを書く