aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.vimrc101
1 files changed, 41 insertions, 60 deletions
diff --git a/.vimrc b/.vimrc
index 5407f30..d876c9c 100644
--- a/.vimrc
+++ b/.vimrc
@@ -53,6 +53,7 @@ unlet s:k s:v
+
" The autogroup used in .vimrc {{{2
augroup Vimrc
@@ -66,6 +67,18 @@ command! -nargs=*
\ autocmd Vimrc <args>
+" Variable for re-entrancy of .vimrc {{{2
+
+" If an operation cannot be executed twice, enclose it with if block.
+"
+" if !s:is_reloading_vimrc
+" ...
+" end
+"
+" See "SourceThisFile()" defined in this file for practical example.
+let s:is_reloading_vimrc = v:vim_did_enter
+
+
" Language {{{2
" Disable L10N.
@@ -631,24 +644,18 @@ endfunction
" Mappings {{{1
+" Note: |:noremap| defines mappings in |Normal|, |Visual|, |Operator-Pending|
+" and |Select| mode. Because I don't use |Select| mode, |:noremap| is executed
+" as substitute of |:nnoremap|, |:xnoremap| and |:onoremap| for simplicity.
-" Fix the search direction. {{{2
-
-nnoremap <expr> gn v:searchforward ? 'gn' : 'gN'
-onoremap <expr> gn v:searchforward ? 'gn' : 'gN'
-xnoremap <expr> gn v:searchforward ? 'gn' : 'gN'
-nnoremap <expr> gN v:searchforward ? 'gN' : 'gn'
-onoremap <expr> gN v:searchforward ? 'gN' : 'gn'
-xnoremap <expr> gN v:searchforward ? 'gN' : 'gn'
+" Fix the search direction. {{{2
-nnoremap <expr> n v:searchforward ? 'n' : 'N'
-onoremap <expr> n v:searchforward ? 'n' : 'N'
-xnoremap <expr> n v:searchforward ? 'n' : 'N'
+noremap <expr> gn v:searchforward ? 'gn' : 'gN'
+noremap <expr> gN v:searchforward ? 'gN' : 'gn'
-nnoremap <expr> N v:searchforward ? 'N' : 'n'
-onoremap <expr> N v:searchforward ? 'N' : 'n'
-xnoremap <expr> N v:searchforward ? 'N' : 'n'
+noremap <expr> n v:searchforward ? 'n' : 'N'
+noremap <expr> N v:searchforward ? 'N' : 'n'
@@ -780,24 +787,14 @@ nnoremap C "_C
xnoremap C "_C
-nnoremap g= =
-onoremap g= =
-xnoremap g= =
+noremap g= =
-nnoremap ml gu
-onoremap ml gu
-xnoremap ml gu
-nnoremap mu gU
-onoremap mu gU
-xnoremap mu gU
+noremap ml gu
+noremap mu gU
-nnoremap gu <Nop>
-onoremap gu <Nop>
-xnoremap gu <Nop>
-nnoremap gU <Nop>
-onoremap gU <Nop>
-xnoremap gU <Nop>
+noremap gu <Nop>
+noremap gU <Nop>
xnoremap u <Nop>
xnoremap U <Nop>
@@ -811,6 +808,7 @@ nnoremap Y y$
xnoremap <expr> Y mode() ==# 'V' ? 'y' : 'Vy'
+
" Swap the keys entering Replace mode and Visual-Replace mode.
nnoremap R gR
nnoremap gR R
@@ -825,35 +823,17 @@ nnoremap U <C-r>
" Motions {{{2
-nnoremap H ^
-onoremap H ^
-xnoremap H ^
-nnoremap L $
-onoremap L $
-xnoremap L $
-nnoremap M %
-onoremap M %
-xnoremap M %
-
-nnoremap gw b
-onoremap gw b
-xnoremap gw b
-nnoremap gW B
-onoremap gW B
-xnoremap gW B
-
-nnoremap k gk
-onoremap k gk
-xnoremap k gk
-nnoremap j gj
-onoremap j gj
-xnoremap j gj
-nnoremap gk k
-onoremap gk k
-xnoremap gk k
-nnoremap gj j
-onoremap gj j
-xnoremap gj j
+noremap H ^
+noremap L $
+noremap M %
+
+noremap gw b
+noremap gW B
+
+noremap k gk
+noremap j gj
+noremap gk k
+noremap gj j
nnoremap gff gF
@@ -979,7 +959,7 @@ command! -nargs=+ -complete=command
" Avoid entering Select mode.
nnoremap gh <Nop>
nnoremap gH <Nop>
-" See below about `g<C-h>`.
+nnoremap g<C-h> <Nop>
nnoremap ZZ <Nop>
nnoremap ZQ <Nop>
@@ -995,7 +975,8 @@ nnoremap <C-h> :<C-u>SmartOpen help<Space>
" For writing Vim script. {{{2
-if !v:vim_did_enter
+if !s:is_reloading_vimrc
+ " Define this function only when Vim is starting up. |v:vim_did_enter|
function! SourceThisFile() abort
let filename = expand('%')
if &filetype ==# 'vim' || expand('%:e') ==# 'vim' || filename =~# '\.g\?vimrc'