forked from suztomo/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 53
/
Copy path.vimrc.moving
98 lines (81 loc) · 2.73 KB
/
.vimrc.moving
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
"-------------------------------------------------------------------------------
" 移動設定 Move
"-------------------------------------------------------------------------------
" カーソルを表示行で移動する。論理行移動は<C-n>,<C-p>
nnoremap h <Left>
nnoremap j gj
nnoremap k gk
nnoremap l <Right>
nnoremap <Down> gj
nnoremap <Up> gk
" 0, 9で行頭、行末へ
nmap 1 0
nmap 0 ^
nmap 9 $
" insert mode での移動
inoremap <C-e> <END>
inoremap <C-a> <HOME>
" インサートモードでもhjklで移動(Ctrl押すけどね)
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-h> <Left>
inoremap <C-l> <Right>
"<space>j, <space>kで画面送り
noremap <Space>j <C-f>
noremap <Space>k <C-b>
" spaceで次のbufferへ。back-spaceで前のbufferへ
nmap <Space><Space> ;MBEbn<CR>
nmap <BS><BS> ;MBEbp<CR>
" F2で前のバッファ
map <F2> <ESC>;bp<CR>
" F3で次のバッファ
map <F3> <ESC>;bn<CR>
" F4でバッファを削除する
map <F4> <ESC>:bnext \| bdelete #<CR>
command! Bw :bnext \| bdelete #
"フレームサイズを怠惰に変更する
map <kPlus> <C-W>+
map <kMinus> <C-W>-
" 前回終了したカーソル行に移動
autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif
" 最後に編集された位置に移動
nnoremap gb '[
nnoremap gp ']
" 対応する括弧に移動
nnoremap ( %
nnoremap ) %
" 最後に変更されたテキストを選択する
nnoremap gc `[v`]
vnoremap gc <C-u>normal gc<Enter>
onoremap gc <C-u>normal gc<Enter>
" カーソル位置の単語をyankする
nnoremap vy vawy
" 矩形選択で自由に移動する
set virtualedit+=block
"ビジュアルモード時vで行末まで選択
vnoremap v $h
" git-diff-aware version of gf commands.
" http://labs.timedia.co.jp/2011/04/git-diff-aware-gf-commands-for-vim.html
nnoremap <expr> gf <SID>do_git_diff_aware_gf('gf')
nnoremap <expr> gF <SID>do_git_diff_aware_gf('gF')
nnoremap <expr> <C-w>f <SID>do_git_diff_aware_gf('<C-w>f')
nnoremap <expr> <C-w><C-f> <SID>do_git_diff_aware_gf('<C-w><C-f>')
nnoremap <expr> <C-w>F <SID>do_git_diff_aware_gf('<C-w>F')
nnoremap <expr> <C-w>gf <SID>do_git_diff_aware_gf('<C-w>gf')
nnoremap <expr> <C-w>gF <SID>do_git_diff_aware_gf('<C-w>gF')
function! s:do_git_diff_aware_gf(command)
let target_path = expand('<cfile>')
if target_path =~# '^[ab]/' " with a peculiar prefix of git-diff(1)?
if filereadable(target_path) || isdirectory(target_path)
return a:command
else
" BUGS: Side effect - Cursor position is changed.
let [_, c] = searchpos('\f\+', 'cenW')
return c . '|' . 'v' . (len(target_path) - 2 - 1) . 'h' . a:command
endif
else
return a:command
endif
endfunction
" insert mode でjjでesc
inoremap jj <Esc>