1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- " Basic cursor movement and deletion keybindings from emacs, for vim.
-
- " insert mode
- imap <C-g> <ESC>
- imap <C-b> <Left>
- imap <C-f> <Right>
- imap <C-p> <Up>
- imap <C-n> <Down>
- 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_line()<CR>
-
- " command line mode
- cmap <C-p> <Up>
- cmap <C-n> <Down>
- cmap <C-b> <Left>
- cmap <C-f> <Right>
- cmap <C-a> <Home>
- cmap <C-e> <End>
- cnoremap <C-d> <Del>
- cnoremap <C-h> <BS>
- cnoremap <C-k> <C-f>D<C-c><C-c>:<Up>
-
- " command-T window
- let g:CommandTCursorLeftMap = ['<Left>', '<C-b>']
- let g:CommandTCursorRightMap = ['<Right>', '<C-f>']
- let g:CommandTBackspaceMap = ['<BS>', '<C-h>']
- let g:CommandTDeleteMap = ['<Del>', '<C-d>']
-
- function! s:home()
- let start_col = col('.')
- normal! ^
- if col('.') == start_col
- normal! 0
- endif
- return ''
- endfunction
-
- function! s:kill_line()
- let [text_before_cursor, text_after_cursor] = s:split_line_text_at_cursor()
- if len(text_after_cursor) == 0
- normal! J
- else
- call setline(line('.'), text_before_cursor)
- endif
- return ''
- endfunction
-
- function! s:split_line_text_at_cursor()
- let line_text = getline(line('.'))
- let text_after_cursor = line_text[col('.')-1 :]
- let text_before_cursor = (col('.') > 1) ? line_text[: col('.')-2] : ''
- return [text_before_cursor, text_after_cursor]
- endfunction
|