14 ms·
What is in your .vimrc
- Pewpewarrows 15y agoManaged using the "homesick" command-line utility to propagate changes to all my working machines: https://github.com/Pewpewarrows/dotfiles/blob/master/home/.vimrc https://github.com/Pewpewarrows/dotfiles/blob/master/home/.v...
- nyellin 15y agoThank you. Here is a link to homesick for others: https://github.com/technicalpickles/homesick https://github.com/technicalpickles/homesick
- ConceitedCode 15y agoThere are some invaluable little snippets in there.
- jonathanwallace 15y agoI forked a great vim_config for ruby/rails coding and made a few tweaks of my own. https://github.com/wallace/vim_config https://github.com/wallace/vim_config
- fauziassegaff 15y agogenerally speaking, this .vimrc is most core config file that had a most use for me, been messing around with it before, and finally i use janus carl and huda https://github.com/carlhuda/janus https://github.com/carlhuda/janus (had to thanks to them) for their distro of the .vimrc configuration, it include just all what i need for my macvim, it has a good plugins and configurations to where i can start of developments. for others that don't want to mess around with vimrc configs (although its fun)just give it a shot and hopefully, and will happifly accept an contribution git clone git://github.com/carlhuda/janus.git (don't forget to rake it after)
- duggan 15y agoI'm not sure how many man-hours were lost to fatfingering :wq as :Wq or :w as :W, but a simple alias has solved that particular bit of grief: cnoreabbrev Wq wq cnoreabbrev W w The rest of my .vimrc mostly belongs to the guy I caught the vim addiction from, but sets some useful defaults: https://github.com/duggan/dotfiles/blob/master/.vimrc https://github.com/duggan/dotfiles/blob/master/.vimrc
- nagnatron 15y agoUsing :x kinda solves the :Wq issue
- huhtenberg 15y agoBy the way :X is encrypt. Now guess how I know that... :)
- nagnatron 15y agoI DID NOT know that and I withdraw my advice above :)
- graywh 15y agoAlso, :wq always writes; :x only writes when the buffer is modified (like :up | q).
- ElbertF 15y agoMapping ; to : and vise versa is a more elegant solution in my opinion (no need to press shift). Here's my .vimrc: https://github.com/ElbertF/dotfiles/blob/master/.vimrc https://github.com/ElbertF/dotfiles/blob/master/.vimrc
- quadhome 15y agoZZ
- markbao 15y agofrom those answers: nore ; : nore , ; Do this now. Probably not the vimrc line that has saved me the most time... but definitely saved me the most pinky pain.
- nyellin 15y agoWhat do you use for leader?
- cma 15y ago:
- wahnfrieden 15y agoThat's awful, 2 keystrokes for <leader>? Use \ for leader, or , for leader and \ for ;
- nyellin 15y agoThat's no better, I think. There is no standard location for \ Try using <space> instead. The default binding is useless for the largest key.
- wahnfrieden 15y agoWhy does it matter if there's no standard location? Do you use the ; command that often in vim anyway that this would be an issue if it were mapped to \?
- nyellin 15y agoYmmv but it unfortunately matters for me. I switch between my work PC and personal Macbook daily. The different positions for \ drive me crazy, but as least it's rarely used on Macs due to sane file paths. Using a moving key in Vim is a bad idea.
- IznastY 15y agoimap jj <Esc>
- pyre 15y agoNo need to create an alias avoid hitting escape: C-c works in most cases C-] works always
- rbonvall 15y agoI prefer not having to press Ctrl. I also map jj to Esc.
- statictype 15y agoI remap my Caps lock key to escape. That's one of the first things I do in a new machine.
- pyre 15y agoI just remap CAPS to Control.
- jedberg 15y agoI keep mine here http://www.jedberg.net/vimrc http://www.jedberg.net/vimrc
- davidjairala 15y agoAccess denied :(
- chris24 15y agoThat link errors out. I think you meant to post this: http://www.jedberg.net/jedberg_vimrc http://www.jedberg.net/jedberg_vimrc
- jedberg 15y agoYep you're right, but it won't let me edit. :/
- amix 15y agoI keep mine at http://amix.dk/vim/vimrc.html http://amix.dk/vim/vimrc.html
- oinksoft 15y agoThis is one of my favorite bits from my .vimrc. It lets you use !find with location list: function! g:Find(...) let subexpr = 'substitute(v:val, ".*", "\"&\" 0: found", "")' let found = join(map(split(system('find ' . join(a:000, ' ')), '\n'), subexpr), "\n") exec 'lgete "' fnameescape(found) '" | lop' endfunction command! -nargs=+ Find call g:Find(<f-args>) The :Find command above passes its arguments to `find`. I use splits heavily, and these mappings for navigating and resizing splits are indispensable: nnoremap <C-K> <C-W>k nnoremap <C-J> <C-W>j nnoremap <C-H> <C-W>h nnoremap <C-L> <C-W>l nnoremap _ 3<C-W><LT> nnoremap + 3<C-W>>
- sliverstorm 15y agoI go with whatever the default is. I've logged on to hundreds of *nix machines in just the past few years, and it's completely not worth the effort to try and maintain a concurrent configuration.
- wahnfrieden 15y agogit clone git://github.com/myname/vimrc.git That's too much effort? Enjoy your default configs with no syntax highlighting etc.
- viraptor 15y agoI've got `cd .dotfiles ; hg pull ; hg up` in my bash to solve this (+ ssh agent to not require logins all the time)
- unfasten 15y agoInsert single characters: Press 's' in normal mode and the next character you type will be inserted at the cursor and put you back in normal. Press 'S' (Capital S or shift+s) and the character will be inserted after the cursor like 'a' append. This is also repeatable, so you can insert a character and then do '5.' to insert it 5 times, still leaving you in normal mode afterwards. Being repeatable is the reasoning I read for it being a function. I picked this up from the Vim wikia site awhile ago. " Insert single char (repeatable) function! RepeatChar(char, count) return repeat(a:char, a:count) endfunction nnoremap <silent> s :<C-U>exec "normal i".RepeatChar(nr2char(getchar()), v:count1)<CR> nnoremap <silent> S :<C-U>exec "normal a".RepeatChar(nr2char(getchar()), v:count1)<CR> Press 'F5' to run the file you're editing, assuming it has a shebang. " Run current file if it has a shebang function! <SID>CallInterpreter() if match(getline(1), '^\#!') == 0 let l:interpreter = getline(1)[2:] exec ("!".l:interpreter." %:p") else echohl ErrorMsg | echo "Err: No shebang present in file, canceling execution" | echohl None endif endfun map <F5> :call <SID>CallInterpreter()<CR> I don't actually use this one a lot, but it can be handy. F10 to switch between the line numbering modes, in Vim versions that have relative line numbering (>= 7.3) " Toggle line numbering modes " Default to relativenumber in newer vim, otherwise regular numbering if v:version >= 703 set relativenumber let s:relativenumber = 0 function! <SID>ToggleRelativeNumber() if s:relativenumber == 0 set number let s:relativenumber = 1 elseif s:relativenumber == 1 set relativenumber let s:relativenumber = 2 else set norelativenumber let s:relativenumber = 0 endif endfunction map <silent><F10> :call <SID>ToggleRelativeNumber()<CR> else set number endif
- marshray 15y agoI map semicolon to <Esc>, and ctrl-l to insert a semicolon in insert mode. <Esc> is one of the most frequent commands, no reason it should be on one of the farthest keys.
- mitjak 15y ago<Ctrl-C> works the same as <Esc> and does the same job of jumping back into normal mode.
- marshray 15y agoCtrl-[, too. But for some reason it's not as smooth for me. This idea of mapping semicolon came from a command layout rethink experiment I originally did on emacs. Always been meaning to reconstruct that more fully some day. Vim doesn't make it possible to define new first-class modes, so it will probably have to be a from-scratch editor (if I ever get around to it).
- freyrs3 15y agoOr bind Caps Lock to <Esc>: $ xmodmap -e "clear lock"; xmodmap -e "keycode 0x42 = Escape"
- marshray 15y agoI'm hooked on Caps Lock being an additional Ctrl. That helps for emacs-style bindings too (like bash).
- jacobr 15y agoI have mapped Caps Lock to switch between input and command mode. I use F10 as a "placeholder" to avoid triggering an actual changing of caps lock mode. # .Xmodmap: keycode 66 = F10 clear Lock # .vimrc imap <F10> <ESC> nmap <F10> i
- mitjak 15y agoI don't have much to add to the thread except for: set undofile which will allow for persistent undo, i.e. undoing changes even after closing a file.
- thristian 15y agoI also "set undodir=/tmp" so that it doesn't litter my working directory with persistent undo files.
- telemachos 15y agoI prefer a variant of that. You can specify more than one place (that is, first choice, second choice, etc.) with a comma-separated list. I do this: " Vim 7.3, now with persistent undo set undofile set undodir=$HOME/.vim_undo,/tmp That way, if I've remembered to create a .vim_undo folder, they go there (best option). Otherwise, /tmp. (You can do the same thing when specifying places for swap and backup files.) As the comment suggests, the undo feature is only 7.3 or better.
- deleted 15y ago[deleted]
- dfranke 15y agodfranke@ancalagon:~$ ls ~/.vimrc ls: cannot access /home/dfranke/.vimrc: No such file or directory
- james2vegas 15y agoI don't have one, I have a .nexrc
- marshray 15y agoI made a little convention of marking 's' and 'd' as the top and bottom of a range of lines. Then I define several handy utilities like: " Shift-Alt-Z #-comment range 's,'d inoremap <S-A-z> <Esc>:'s,'ds/^/#/g<CR>:noh<CR> inoremap ^[Z <Esc>:'s,'ds/^/#/g<CR>:noh<CR> noremap <S-A-z> :'s,'ds/^/#/g<CR>:noh<CR> noremap ^[Z :'s,'ds/^/#/g <CR>:noh<CR> onoremap <S-A-z> <C-c>:'s,'ds/^/#/g<CR>:noh<CR> onoremap ^[Z <C-c>:'s,'ds/^/#/g<CR>:noh<CR>
- marshray 15y ago" Shift-Alt-S -- (C++) - change the current word/identifier in a quoted " string to an ostream expression. " For example, put the cursor on on the 'xxx' in: " cout << "value = xxx\n"; " hit Shift-Alt-S and it changes to: " cout << "value = " << xxx << "\n"; inoremap <S-A-s> <Esc>lbdei" << <Esc>pa << "<Esc>bb inoremap ^[S <Esc>lbdei" << <Esc>pa << "<Esc>bb noremap <S-A-s> lbdei" << <Esc>pa << "<Esc>bb noremap ^[S lbdei" << <Esc>pa << "<Esc>bb onoremap <S-A-s> <C-c>lbdei" << <Esc>pa << "<Esc>bb onoremap ^[S <C-c>lbdei" << <Esc>pa << "<Esc>bb
- bretthopper 15y agoGood ones I've come across (with useful comments): https://github.com/sjl/dotfiles/blob/master/vim/.vimrc https://github.com/sjl/dotfiles/blob/master/vim/.vimrc https://github.com/cloudhead/dotfiles/blob/master/.vimrc https://github.com/cloudhead/dotfiles/blob/master/.vimrc https://github.com/rtomayko/dotfiles/blob/rtomayko/.vimrc https://github.com/rtomayko/dotfiles/blob/rtomayko/.vimrc https://github.com/nvie/vimrc/blob/master/vimrc https://github.com/nvie/vimrc/blob/master/vimrc https://github.com/vgod/vimrc/blob/master/vimrc https://github.com/vgod/vimrc/blob/master/vimrc https://github.com/spf13/spf13-vim/blob/master/.vimrc https://github.com/spf13/spf13-vim/blob/master/.vimrc
- beza1e1 15y agoI also keep mine in Github: https://github.com/beza1e1/dot/blob/master/vimrc https://github.com/beza1e1/dot/blob/master/vimrc
- Vitaly 15y agoa whole packaged deal at https://github.com/astrails/dotvim https://github.com/astrails/dotvim tons of extensions and custom bindings. good README.
- jmcantrell 15y agohttps://github.com/jmcantrell/dotfiles-vim https://github.com/jmcantrell/dotfiles-vim
- _sh 15y agoI work with multiple files a lot, so I'm always navigating between split screens and across buffers. " Split windows/multiple files " use <Ctrl>+s to split the current window nmap <C-S> <C-W>s " use <Ctrl>+j/<Ctrl>+k to move up/down through split windows nmap <C-J> <C-W>j nmap <C-K> <C-W>k " use <Ctrl>+-/<Ctrl>+= to maximise/equalise the size of split windows nmap <C--> <C-W>_ nmap <C-=> <C-W>= " use <Ctrl>+h/<Ctrl>+l to move back/forth through files: nmap <C-L> :next<CR> nmap <C-H> :prev<CR> Note these use the same 'hjkl' navigation keys.
- gcr 15y agonnoremap \ta <Esc>:tab ball<CR> Now you can run `vim foo bar baz` and then when open just type `\ta` and it will open them cleanly in three different tabs. Why they renamed a command "tab ball" I will never know.
- deleted 15y ago[deleted]
- LeafStorm 15y agoWhile the flexibility and portability of Vim is quite attractive, I doubt I could really retrain myself to use the modal interface. Are there packages/scripts/whatever that would allow one to use Vim in the way that one would use a more "normal" text editor?
- njharman 15y agoVim == modal Without modal interface vim is just another editor. Modal is fundamental to vim's power.
- jberryman 15y agoGvim in insert mode is essentially a "normal" editor, I.e. You can use it like ms notepad. But that would defeat the whole purpose. It takes memorizing about a dozen key bindings to be proficient with basic editing, and then you're off to the races. You'll have no problem.
- Groxx 15y agoI'm not a vim scripter, but I'd be willing to bet you could make a (very very simple) script that would dump you back into input mode after a single command. That, or use a gui vim and ignore the whole command-mode thing (probably augmented with the before-mentioned script) and use buttons.
- seabee 15y agoYou might be interested in Cream: http://cream.sourceforge.net/ http://cream.sourceforge.net/
- hetman 15y agoIt's worth mentioning that Cream is completely Vim underneath, however, by default it uses the Common User Access interface for user input like most modern editors. It is also possible to enable traditional Vim input using expert mode, CUA is retained in insert mode making it very easy for anyone not familiar with Vim to get started and transition.
- Oompa 15y agohttps://github.com/skalnik/vim_config https://github.com/skalnik/vim_config
- hackingOnAJet 15y agohttps://github.com/brianholderchow/vim-bhclo https://github.com/brianholderchow/vim-bhclo
- ashley_woodard 15y agoThis is an ugly hack I came up with to layout my windows how I like them. I have NERDTree and Taglist in a horizontally split window to the left and MiniBufExplorer across the top of the screen. See http://yfrog.com/h7sg7fp http://yfrog.com/h7sg7fp autocmd VimEnter * call<SID>LayoutWindows() function! s:LayoutWindows() execute 'NERDTree' let nerdtree_buffer = bufnr(t:NERDTreeBufName) execute 'wincmd q' execute 'Tlist' execute 'wincmd h' execute 'split' execute 'b' . nerdtree_buffer let mbe_window = bufwinnr("-MiniBufExplorer-") if mbe_window != -1 execute mbe_window . "wincmd w" execute 'wincmd K' endif execute 'resize +20' execute 'wincmd l' endfunction
- ajtaylor 15y agoThat does it! I've read about both these extensions before, but tomorrow morning I'm taking the time to set them up on my machines. The setup looks like exactly what I've been wanting. Split windows only go so far, and still doesn't let me easily have more than a few buffers visible at once.
- mun2mun 15y agoMy favourite two lines (found in another .vimrc long time ago). set switchbuf=useopen,usetab Files opened from buffer if exists. Handy for command-t plugin. autocmd BufReadPost * normal `" Remembers the cursor position of files.
- joelthelion 15y agoIt's a shame that SO doesn't allow these types of questions anymore. They are very useful for beginners who want to know how experienced users actually use the tool. The fact that they cannot be answered objectively doesn't make them less useful, and contrary to what is stated in the FAQ, the question and answers model is perfectly suited to this type of question.
- tommi 15y agoIt's because it's more like a discussion than a question. And it's more suited here anyway: http://superuser.com/ http://superuser.com/
- joelthelion 15y agoNot really: "What's in your .vimrc?" is a question. Don't get me started on the idea to have separate "sites" for every topic. It creates a lot of noise, confuses beginners and serves no practical purposes that tags can't fulfil.
- spiffytech 15y agoStackOverflow, and it's family of sites, aim to answer questions that can have a single "most correct" answer. While "what's in your .vimrc"-style questions are undoubtedly helpful, they are beyond the scope of SO et al.
- joelthelion 15y agoYes, and they shouldn't, which is my point.
- nickknw 15y agoVim questions generally do belong on StackOverflow, not SuperUser. http://meta.stackoverflow.com/questions/25925/vim-questions-so-or-su http://meta.stackoverflow.com/questions/25925/vim-questions-...
- jonasb 15y agoThe most important thing I've learnt recently regarding Vim config is Pathogen. https://github.com/tpope/vim-pathogen https://github.com/tpope/vim-pathogen With it it's much easier to keep plugins separate and encourages putting your own tweaks in custom plugins.
- ElliotH 15y agoSee also: http://stackoverflow.com/questions/154097/whats-in-your-emacs http://stackoverflow.com/questions/154097/whats-in-your-emac...
- viraptor 15y agoInteresting bits: make sure I'm scrolling visual lines, not real lines noremap j gj noremap k gk ctrl+l/h for changing tabs noremap <C-l> gt noremap <C-h> gT Search improvements: set incsearch set hlsearch Best theme ever (very objective of course): let g:inkpot_black_background = 1 colors inkpot Making sure tmp files are stored in only one location, not all around the system: if ! isdirectory(expand('~/vimtmp')) call mkdir(expand('~/vimtmp')) endif if isdirectory(expand('~/vimtmp')) set directory=~/vimtmp else set directory=.,/var/tmp,/tmp endif
- gbog 15y agoThese vimrc posts are not always very useful. Actually, it should be reminded that each line in vimrc may have bad side-effects. It may increase Vim instance loading time, and increase editing footprint, or slowdown processes like highlighting and scrolling. Moreover, and probably worse, each specific configuration increases the distance between your daily Vim-fu and the one you'll have to use on another user or another machine. And these occasions have been, in my experience, those when great Vim-fu was the most critical (eg. trying to keep your hand on a dying server on a flooded connection, or showing off your skills on your boss's Mac during plane trip). All this holds for bashrc too. The closest to the default is the best, to some extent. I take vimrc posts as good occasions to proofread mine and remove all unused stuff. I just commented out a very weird "set notagbsearch" which was probably killing my <ctrl>-].
- hack_edu 15y agoI like your style. Care to share yours?
- gbog 15y agoVim 7 in terminal exclusively: I have the classic things about backspace, black background, statusbar, hlsearch, autocomplete, etc. Then I have a few shortcuts on <Function keys>, because these cannot override other bindings. The most important is <F9> linked to pastetoggle. I also have some specific settings for my current main language (Python). I try to avoid rebinding normal keys because it can kill you when you get used to your tweaks and have to use another instance, but one thing I do is imap <ins> <Nop>, because I hate being suddenly thrown in replace mode. Plugins I have grep.vim linked to <F3> and I'm currently trying NERD_commenter.vim on <F6>
- lynndylanhurley 15y agoWell then you have to extend the argument to plugins as well, and certain plugins (SnipMate, AutoComplPop, Fugitive, etc.) can increase productivity by several orders of magnitude. It's best to store your .vimrc + .vim/ folder on GitHub or a thumb-drive for easy restoration rather than crippling yourself with a limited configuration. Someone else mentioned Homesick (https://github.com/technicalpickles/homesick https://github.com/technicalpickles/homesick) which works really well.
- pointyhat 15y agoCobwebs: syntax on; set ts=4; set sw=4; set ai; Keep it simple :)
- cpeterso 15y ago" Automagically save files when focus is lost autocmd BufLeave,FocusLost silent! wall " Highlight whitespace at the end of a line highlight ExtraWhitespace ctermbg=Black guibg=Black match ExtraWhitespace /\s\+$/ autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/ autocmd InsertLeave * match ExtraWhitespace /\s\+$/ autocmd BufWinLeave * call clearmatches() " Disable man key nnoremap K <nop>