機械音痴な情報系

エラーの解決方法とTips

Goodbye, Atom. Hello, Vim!!

Hello, Vim!

EmacsSublimeAtom(仕事・研究ではEclipse、たまーーーーに気まぐれでVisual Studio Code)という順番で乗り換えてきた。

ということでもっぱらAtomを使っているけど、jsxファイルに対応させるプラグインを入れてからどうやら動作がおかしい。
例えばCtrl+HやCtrl+BをHTMLのタグ内で行うと、インデントされた括弧{}が出てきてしまう。
Unixキーに慣れてしまうと、矢印キーやBackspaceなんてもんを使うのなんてもう絶対無理(とか言いながら会社のWindowsでは泣く泣く使っているんだけど)。

あれやこれや入れて行くと、自分の意図しない動作をしはじめてそれを解決するのも面倒。
最近4年半使っていたMacBookAir13も壊れたし、退職することも決まったので新しい会社に行ってPC変えると色々入れなおすのも面倒。

ってことでこれを機にVimに乗り換えよう!
最近友人のVimmerから勧誘を受けていたし(?)
Vimの設定ファイルを書くのは育てる感があるし、勉強にもなるしあまり面倒だと思わない...。

Vimのモードいろいろ

ノーマルモード

  • 起動直後のモード。カーソル移動、削除、編集を行う
  • このモードから編集モードやコマンドモードに移る。
  • ノーマルモードに戻る方法:「Esc」「Ctrl + [」「Ctrl + c」

挿入モード

  • テキストを書き込む時のモード。
  • ノーマルモードから入る方法:「i」「I」「a」「A」「o」「O」

ビジュアルモード

  • 領域を選択してコピー範囲を指定する際のモード。
  • ノーマルモードから入る方法:「v」「V」「Ctrl + v」「gv」など

コマンドラインモード

  • ファイル保存、Vimの終了、検索や置換などをするモード。
  • ノーマルモードから入る方法:「:」「/」「?」など

基本コマンド

[Vim] Vim初心者の自分が、初心者の視点からVim入門を書いてみました。 - YoheiM .NET

Emacs風にしたい

元々Emacs使ってたからUnixキーバインドゴリゴリに使いたいんだけど、Vimって上に移動するのに一回ノーマルモードに入ってからhjkl押すの????めんどくせええ!!!とか思ってたら設定出来るようですね。そりゃそうだ。

"""""""""""""""""""""""""""""""""""""""""""""""""
" Emacs Keybind
"""""""""""""""""""""""""""""""""""""""""""""""""
imap <C-p> <Up>
imap <C-n> <Down>
imap <C-b> <Left>
imap <C-f> <Right>
imap <C-a> <C-o>:call <SID>home()<CR>
imap <C-e> <End>
imap <C-d> <Del>
imap <C-h> <BS>
imap <C-k> <C-r>=<SID>kill()<CR>

function! s:home()
  let start_column = col('.')
  normal! ^
  if col('.') == start_column
  ¦ normal! 0
  endif
  return ''
endfunction

function! s:kill()
  let [text_before, text_after] = s:split_line()
  if len(text_after) == 0
  ¦ normal! J
  else
  ¦ call setline(line('.'), text_before)
  endif
  return ''
endfunction

function! s:split_line()
  let line_text = getline(line('.'))
  let text_after  = line_text[col('.')-1 :]
  let text_before = (col('.') > 1) ? line_text[: col('.')-2] : ''
  return [text_before, text_after]
endfunction

じっくりコトコト育てていこう

vimrcはgithubに上げようと思ってたけど、dotfilesという名前で色々な設定ファイルをあげるようなので、自分もリポジトリを作ってみました。
じっくり育てていきます。
githubからファイル落とすだけでどこでも同じ環境に出来るの強い。
github.com

参考