Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

VimをちょっとだけEmacsキーバインドに近づけるための.vimrc

$
0
0

Vimでインサートモードに入ったときにEmacsキーバインドでカーソル移動ができるようにするための.vimrcの設定を記す。

この.vimrcは、本当に最低限のカーソル移動ができるようにするためのものである。これ以上Emacsに近づけると、EmacsユーザがEmacs使えよって言ってきて面倒な宗教戦争談話に巻き込まれるので絶対にやめておこう!絶対にだ。

この.vimrcでできることは以下の通り:

キーバインド動作
Ctrl-pカーソルを上の行へ移動
Ctrl-nカーソルを下の行へ移動
Ctrl-bカーソルを左の行へ移動
Ctrl-fカーソルを右の行へ移動
Ctrl-aカーソルを行の先頭へ移動
Ctrl-eカーソルを行の末尾へ移動
Ctrl-dカーソルの右の文字を削除
Ctrl-hカーソルを左の文字を削除
Ctrl-k現在のカーソル位置から行末尾までを切り取り
.vimrc
" insert mode
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! ^
  ifcol('.')== start_column
  ¦ normal!0endifreturn''endfunctionfunction!s:kill()let [text_before, text_after] =s:split_line()if len(text_after)==0¦ normal! J
  else¦ call setline(line('.'), text_before)endifreturn''endfunctionfunction!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

以下の通り、Plugin化した。
vim-emacs-bindings


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>