diff --git a/rcfiles/vimrc b/rcfiles/vimrc new file mode 100644 index 0000000..8818807 --- /dev/null +++ b/rcfiles/vimrc @@ -0,0 +1,107 @@ +set encoding=utf-8 + +" Leader +let mapleader = " " + +set backspace=2 " Backspace deletes like most programs in insert mode +set nobackup +set nowritebackup +set noswapfile " http://robots.thoughtbot.com/post/18739402579/global-gitignore#comment-458413287 +set history=50 +set ruler " show the cursor position all the time +set showcmd " display incomplete commands +set incsearch " do incremental searching +set laststatus=2 " Always display the status line +set autowrite " Automatically :write before running commands +set modelines=0 " Disable modelines as a security precaution +set nomodeline + +" Switch syntax highlighting on, when the terminal has colors +" Also switch on highlighting the last used search pattern. +if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on") + syntax on +endif + +filetype plugin indent on + +augroup vimrcEx + autocmd! + + " When editing a file, always jump to the last known cursor position. + " Don't do it for commit messages, when the position is invalid, or when + " inside an event handler (happens when dropping a file on gvim). + autocmd BufReadPost * + \ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g`\"" | + \ endif + + " Set syntax highlighting for specific file types + autocmd BufRead,BufNewFile *.md set filetype=markdown + autocmd BufRead,BufNewFile .{jscs,jshint,eslint}rc set filetype=json + autocmd BufRead,BufNewFile + \ aliases.local, + \zshenv.local,zlogin.local,zlogout.local,zshrc.local,zprofile.local, + \*/zsh/configs/* + \ set filetype=sh + autocmd BufRead,BufNewFile gitconfig.local set filetype=gitconfig + autocmd BufRead,BufNewFile tmux.conf.local set filetype=tmux + autocmd BufRead,BufNewFile vimrc.local set filetype=vim +augroup END + +" When the type of shell script is /bin/sh, assume a POSIX-compatible +" shell for syntax highlighting purposes. +let g:is_posix = 1 + +" Softtabs, 2 spaces +set tabstop=2 +set shiftwidth=2 +set shiftround +set expandtab + +" Display extra whitespace +set list listchars=tab:»·,trail:·,nbsp:· + +" Use one space, not two, after punctuation. +set nojoinspaces + +" Use Ripgrep vs grep +if executable('rg') + " Use rg over Grep + set grepprg=rg\ --color=never + + " Use rg in fzf for listing files. Lightning fast and respects .gitignore + let $FZF_DEFAULT_COMMAND = 'rg --files-with-matches --color=never --hidden ""' + + nnoremap \ :Ag +endif + +" Make it obvious where 80 characters is +set textwidth=80 +set colorcolumn=+1 + +" Numbers +set number +set numberwidth=5 + +" Switch between the last two files +nnoremap + +" Run commands that require an interactive shell +nnoremap r :RunInInteractiveShell + +" Treat
  • and

    tags like the block tags they are +let g:html_indent_tags = 'li\|p' + +" Open new split panes to right and bottom, which feels more natural +set splitbelow +set splitright + +" Quicker window movement +nnoremap j +nnoremap k +nnoremap h +nnoremap l + +" Map Ctrl + p to open fuzzy find (FZF) +nnoremap :Files + diff --git a/vim.nix b/vim.nix index b7358b5..397df79 100644 --- a/vim.nix +++ b/vim.nix @@ -6,6 +6,10 @@ plugins = with pkgs.vimPlugins; [ vim-nix rust-vim + fzf-vim ]; + extraConfig = '' + source ${./rcfiles/vimrc} + ''; }; }