123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- " Set options and add mapping such that Vim behaves a lot like MS-Windows
- "
- " Maintainer: Bram Moolenaar <Bram@vim.org>
- " Last Change: 2018 Dec 07
- " Bail out if this isn't wanted.
- if exists("g:skip_loading_mswin") && g:skip_loading_mswin
- finish
- endif
- " set the 'cpoptions' to its Vim default
- if 1 " only do this when compiled with expression evaluation
- let s:save_cpo = &cpoptions
- endif
- set cpo&vim
- " set 'selection', 'selectmode', 'mousemodel' and 'keymodel' for MS-Windows
- behave mswin
- " backspace and cursor keys wrap to previous/next line
- set backspace=indent,eol,start whichwrap+=<,>,[,]
- " backspace in Visual mode deletes selection
- vnoremap <BS> d
- if has("clipboard")
- " CTRL-X and SHIFT-Del are Cut
- vnoremap <C-X> "+x
- vnoremap <S-Del> "+x
- " CTRL-C and CTRL-Insert are Copy
- vnoremap <C-C> "+y
- vnoremap <C-Insert> "+y
- " CTRL-V and SHIFT-Insert are Paste
- map <C-V> "+gP
- map <S-Insert> "+gP
- cmap <C-V> <C-R>+
- cmap <S-Insert> <C-R>+
- endif
- " Pasting blockwise and linewise selections is not possible in Insert and
- " Visual mode without the +virtualedit feature. They are pasted as if they
- " were characterwise instead.
- " Uses the paste.vim autoload script.
- " Use CTRL-G u to have CTRL-Z only undo the paste.
- if 1
- exe 'inoremap <script> <C-V> <C-G>u' . paste#paste_cmd['i']
- exe 'vnoremap <script> <C-V> ' . paste#paste_cmd['v']
- endif
- imap <S-Insert> <C-V>
- vmap <S-Insert> <C-V>
- " Use CTRL-Q to do what CTRL-V used to do
- noremap <C-Q> <C-V>
- " Use CTRL-S for saving, also in Insert mode (<C-O> doesn't work well when
- " using completions).
- noremap <C-S> :update<CR>
- vnoremap <C-S> <C-C>:update<CR>
- inoremap <C-S> <Esc>:update<CR>gi
- " For CTRL-V to work autoselect must be off.
- " On Unix we have two selections, autoselect can be used.
- if !has("unix")
- set guioptions-=a
- endif
- " CTRL-Z is Undo; not in cmdline though
- noremap <C-Z> u
- inoremap <C-Z> <C-O>u
- " CTRL-Y is Redo (although not repeat); not in cmdline though
- noremap <C-Y> <C-R>
- inoremap <C-Y> <C-O><C-R>
- " Alt-Space is System menu
- if has("gui")
- noremap <M-Space> :simalt ~<CR>
- inoremap <M-Space> <C-O>:simalt ~<CR>
- cnoremap <M-Space> <C-C>:simalt ~<CR>
- endif
- " CTRL-A is Select all
- noremap <C-A> gggH<C-O>G
- inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
- cnoremap <C-A> <C-C>gggH<C-O>G
- onoremap <C-A> <C-C>gggH<C-O>G
- snoremap <C-A> <C-C>gggH<C-O>G
- xnoremap <C-A> <C-C>ggVG
- " CTRL-Tab is Next window
- noremap <C-Tab> <C-W>w
- inoremap <C-Tab> <C-O><C-W>w
- cnoremap <C-Tab> <C-C><C-W>w
- onoremap <C-Tab> <C-C><C-W>w
- " CTRL-F4 is Close window
- noremap <C-F4> <C-W>c
- inoremap <C-F4> <C-O><C-W>c
- cnoremap <C-F4> <C-C><C-W>c
- onoremap <C-F4> <C-C><C-W>c
- if has("gui")
- " CTRL-F is the search dialog
- noremap <expr> <C-F> has("gui_running") ? ":promptfind\<CR>" : "/"
- inoremap <expr> <C-F> has("gui_running") ? "\<C-\>\<C-O>:promptfind\<CR>" : "\<C-\>\<C-O>/"
- cnoremap <expr> <C-F> has("gui_running") ? "\<C-\>\<C-C>:promptfind\<CR>" : "\<C-\>\<C-O>/"
- " CTRL-H is the replace dialog,
- " but in console, it might be backspace, so don't map it there
- nnoremap <expr> <C-H> has("gui_running") ? ":promptrepl\<CR>" : "\<C-H>"
- inoremap <expr> <C-H> has("gui_running") ? "\<C-\>\<C-O>:promptrepl\<CR>" : "\<C-H>"
- cnoremap <expr> <C-H> has("gui_running") ? "\<C-\>\<C-C>:promptrepl\<CR>" : "\<C-H>"
- endif
- " restore 'cpoptions'
- set cpo&
- if 1
- let &cpoptions = s:save_cpo
- unlet s:save_cpo
- endif
|