287 lines
7.8 KiB
VimL
287 lines
7.8 KiB
VimL
set background=dark
|
|
set t_RB=
|
|
colorscheme molokai
|
|
|
|
|
|
if &compatible
|
|
set nocompatible
|
|
endif
|
|
|
|
" ---------------------------------------------------------------------------
|
|
" Leader key
|
|
" ---------------------------------------------------------------------------
|
|
let mapleader = " "
|
|
let maplocalleader = " "
|
|
nnoremap <Space> <Nop>
|
|
set timeoutlen=500
|
|
|
|
" ---------------------------------------------------------------------------
|
|
" Sensible interface defaults
|
|
" ---------------------------------------------------------------------------
|
|
syntax enable
|
|
filetype plugin indent on
|
|
|
|
set number
|
|
set cursorline
|
|
set ruler
|
|
set showcmd
|
|
set showmode
|
|
set laststatus=2
|
|
set showtabline=2
|
|
set wildmenu
|
|
set wildmode=longest:full,full
|
|
set scrolloff=4
|
|
set sidescrolloff=4
|
|
set splitbelow
|
|
set splitright
|
|
set hidden
|
|
set confirm
|
|
set mouse=a
|
|
|
|
" Search as you type; keep searches case-sensitive only when capitals are used.
|
|
set incsearch
|
|
set hlsearch
|
|
set ignorecase
|
|
set smartcase
|
|
|
|
" Comfortable editing defaults.
|
|
set backspace=indent,eol,start
|
|
set autoindent
|
|
set smartindent
|
|
set expandtab
|
|
set tabstop=2
|
|
set shiftwidth=2
|
|
set softtabstop=2
|
|
|
|
" Python convention: four-space indentation.
|
|
augroup simple_indentation
|
|
autocmd!
|
|
autocmd FileType python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4
|
|
augroup END
|
|
|
|
" Use the desktop clipboard when this Vim build supports it.
|
|
if has('clipboard')
|
|
set clipboard=unnamedplus
|
|
endif
|
|
|
|
" ---------------------------------------------------------------------------
|
|
" Built-in file browser (netrw): tree-style sidebar, no plugin required
|
|
" ---------------------------------------------------------------------------
|
|
let g:netrw_banner = 0
|
|
let g:netrw_liststyle = 3
|
|
let g:netrw_winsize = 25
|
|
let g:netrw_keepdir = 1
|
|
let g:netrw_altv = 1
|
|
|
|
" Space-e: toggle the file browser on the left.
|
|
nnoremap <silent> <leader>e :Lexplore<CR>
|
|
|
|
" Useful keys while the file browser is focused:
|
|
" Enter open file or directory
|
|
" t open file in a new tab
|
|
" - go to the parent directory
|
|
" R rename selected file
|
|
" D delete selected file
|
|
" % create a new file
|
|
" d create a new directory
|
|
|
|
" ---------------------------------------------------------------------------
|
|
" Tabs
|
|
" ---------------------------------------------------------------------------
|
|
nnoremap <silent> <Tab> gt
|
|
nnoremap <silent> <S-Tab> gT
|
|
nnoremap <silent> <leader>t :tabnew<CR>
|
|
nnoremap <silent> <leader>c :tabclose<CR>
|
|
|
|
" Move the current tab left or right.
|
|
nnoremap <silent> <leader>[ :tabmove -1<CR>
|
|
nnoremap <silent> <leader>] :tabmove +1<CR>
|
|
|
|
" ---------------------------------------------------------------------------
|
|
" Everyday shortcuts (each is Leader plus one key)
|
|
" ---------------------------------------------------------------------------
|
|
nnoremap <silent> <leader>s :write<CR>
|
|
nnoremap <silent> <leader>q :quit<CR>
|
|
nnoremap <silent> <leader>x :write<CR>:quit<CR>
|
|
nnoremap <silent> <leader>/ :nohlsearch<CR>
|
|
|
|
" Move between split windows.
|
|
nnoremap <silent> <leader>h <C-w>h
|
|
nnoremap <silent> <leader>j <C-w>j
|
|
nnoremap <silent> <leader>k <C-w>k
|
|
nnoremap <silent> <leader>l <C-w>l
|
|
|
|
" ---------------------------------------------------------------------------
|
|
" Project navigation
|
|
" ---------------------------------------------------------------------------
|
|
|
|
" Search recursively from Vim's current directory.
|
|
set path+=**
|
|
|
|
" Ignore generated and dependency directories.
|
|
set wildignore+=*/.git/*
|
|
set wildignore+=*/node_modules/*
|
|
set wildignore+=*/dist/*
|
|
set wildignore+=*/build/*
|
|
set wildignore+=*/coverage/*
|
|
|
|
" Space-f: type part of a filename and press Tab.
|
|
nnoremap <leader>f :find<Space>
|
|
|
|
" Space-o: show previously opened files.
|
|
nnoremap <silent> <leader>o :browse oldfiles<CR>
|
|
|
|
" Space-b: list buffers, then type the buffer number and press Enter.
|
|
nnoremap <leader>b :buffers<CR>:buffer<Space>
|
|
|
|
|
|
|
|
|
|
|
|
function! ProjectSearch()
|
|
let l:query = input('Search project: ')
|
|
|
|
if empty(l:query)
|
|
return
|
|
endif
|
|
|
|
execute 'silent vimgrep /\V'
|
|
\ . escape(l:query, '/\')
|
|
\ . '/gj **/*'
|
|
|
|
copen
|
|
endfunction
|
|
|
|
nnoremap <silent> <leader>g :call ProjectSearch()<CR>
|
|
nnoremap <silent> <leader>n :cnext<CR>
|
|
nnoremap <silent> <leader>p :cprevious<CR>
|
|
|
|
|
|
function! ReindentFile()
|
|
let l:view = winsaveview()
|
|
normal! gg=G
|
|
call winrestview(l:view)
|
|
endfunction
|
|
|
|
nnoremap <silent> <leader>i :call ReindentFile()<CR>
|
|
xnoremap <silent> <leader>i =gv
|
|
|
|
|
|
" Save all modified files.
|
|
nnoremap <silent> <leader>a :wall<CR>
|
|
|
|
" Splits.
|
|
nnoremap <silent> <leader>v :vsplit<CR>
|
|
nnoremap <silent> <leader>- :split<CR>
|
|
nnoremap <silent> <leader>= <C-w>=
|
|
|
|
" Reload the configuration after editing ~/.vimrc.
|
|
nnoremap <silent> <leader>r :source $MYVIMRC<CR>
|
|
|
|
" Quickly leave Insert mode.
|
|
inoremap jk <Esc>
|
|
|
|
" ---------------------------------------------------------------------------
|
|
" Keymap help screen
|
|
" ---------------------------------------------------------------------------
|
|
|
|
function! ShowKeymapHelp()
|
|
" Open the help in a temporary buffer.
|
|
enew
|
|
silent file Vim-Keymaps
|
|
|
|
setlocal buftype=nofile
|
|
setlocal bufhidden=wipe
|
|
setlocal noswapfile
|
|
setlocal nobuflisted
|
|
setlocal nomodified
|
|
setlocal nowrap
|
|
setlocal nonumber
|
|
setlocal norelativenumber
|
|
setlocal nocursorline
|
|
|
|
call setline(1, [
|
|
\ 'VIM KEYMAPS',
|
|
\ '===========',
|
|
\ '',
|
|
\ 'Leader key: Space',
|
|
\ '',
|
|
\ 'FILES AND BROWSING',
|
|
\ ' Space e Toggle file browser',
|
|
\ ' Space f Find project file',
|
|
\ ' Space o Recently opened files',
|
|
\ ' Space b List open buffers',
|
|
\ '',
|
|
\ 'Inside the file browser:',
|
|
\ ' Enter Open file or directory',
|
|
\ ' t Open file in new tab',
|
|
\ ' - Parent directory',
|
|
\ ' % Create file',
|
|
\ ' d Create directory',
|
|
\ ' R Rename file',
|
|
\ ' D Delete file',
|
|
\ '',
|
|
\ 'TABS',
|
|
\ ' Tab Next tab',
|
|
\ ' Shift-Tab Previous tab',
|
|
\ ' Space t Create new tab',
|
|
\ ' Space c Close current tab',
|
|
\ ' Space [ Move tab left',
|
|
\ ' Space ] Move tab right',
|
|
\ '',
|
|
\ 'SEARCH',
|
|
\ ' Space g Search text in project',
|
|
\ ' Space n Next search result',
|
|
\ ' Space p Previous search result',
|
|
\ ' Space / Clear search highlighting',
|
|
\ '',
|
|
\ 'EDITING',
|
|
\ ' Space s Save current file',
|
|
\ ' Space a Save all files',
|
|
\ ' Space i Auto-indent entire file',
|
|
\ ' jk Leave Insert mode',
|
|
\ '',
|
|
\ 'WINDOWS',
|
|
\ ' Space v Vertical split',
|
|
\ ' Space - Horizontal split',
|
|
\ ' Space = Equalize split sizes',
|
|
\ ' Space h Move to left window',
|
|
\ ' Space j Move to lower window',
|
|
\ ' Space k Move to upper window',
|
|
\ ' Space l Move to right window',
|
|
\ '',
|
|
\ 'VIM',
|
|
\ ' Space q Quit',
|
|
\ ' Space x Save and quit',
|
|
\ ' Space r Reload .vimrc',
|
|
\ ' Space ? Show this screen',
|
|
\ '',
|
|
\ 'Press q or Esc to close this screen.',
|
|
\ 'Press Space e to open the file browser.',
|
|
\ ])
|
|
|
|
setlocal nomodifiable
|
|
normal! gg
|
|
|
|
" These mappings work only inside this help screen.
|
|
nnoremap <silent> <buffer> q :bdelete!<CR>
|
|
nnoremap <silent> <buffer> <Esc> :bdelete!<CR>
|
|
endfunction
|
|
|
|
" Show the help screen manually.
|
|
nnoremap <silent> <leader>? :call ShowKeymapHelp()<CR>
|
|
|
|
" Detect whether Vim is receiving piped input.
|
|
let g:vim_reading_stdin = 0
|
|
|
|
augroup keymap_help_startup
|
|
autocmd!
|
|
autocmd StdinReadPre * let g:vim_reading_stdin = 1
|
|
|
|
" Show the help only when Vim starts without a filename.
|
|
autocmd VimEnter *
|
|
\ if argc() == 0 && !g:vim_reading_stdin |
|
|
\ call ShowKeymapHelp() |
|
|
\ endif
|
|
augroup END
|