Last active
August 17, 2017 10:20
-
-
Save badescunicu/faf8eb05bc00199242b4 to your computer and use it in GitHub Desktop.
My .vimrc file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export HISTCONTROL=ignoredups:erasedups | |
export HISTSIZE=-1 | |
export HISTFILESIZE=-1 | |
shopt -s histappend |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Mrxvt.bottomTabbar: False | |
Mrxvt.geometry: 80x60 | |
Mrxvt.xft: 1 | |
Mrxvt.font: 10x20 | |
Mrxvt.scrollBar: False | |
Mrxvt.scrollTtyKeypress: False | |
Mrxvt.saveLines: 65535 | |
Mrxvt.showMenu: False | |
Mrxvt.hideButtons: true | |
Mrxvt.itabBackground: #101010 | |
Mrxvt.tabBackground: #000000 | |
Mrxvt.itabForeground: #909090 | |
Mrxvt.tabForeground: #9a9a9a | |
Mrxvt.maxTabWidth: 12 | |
Mrxvt.background: #000000 | |
Mrxvt.foreground: #9a9a9a | |
Mrxvt.color0: #000000 | |
Mrxvt.color1: #af0000 | |
Mrxvt.color2: #00af00 | |
Mrxvt.color3: #afaf00 | |
Mrxvt.color4: #0000af | |
Mrxvt.color5: #af00af | |
Mrxvt.color6: #00afaf | |
Mrxvt.color7: #9a9a9a | |
Mrxvt.color8: #5f5f5f | |
Mrxvt.color9: #d70000 | |
Mrxvt.color10: #00d700 | |
Mrxvt.color11: #d7d700 | |
Mrxvt.color12: #0000d7 | |
Mrxvt.color13: #d700d7 | |
Mrxvt.color14: #00d7d7 | |
Mrxvt.color15: #d7d7d7 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Install vim, ctags, cscope and Vundle on the system | |
before copying these 2 files. ycm_extra_conf.py goes in .vim/ directory. | |
Usage: ctags -R in the root directory of the project. | |
a.vim :A to switch | |
:AT open in new tab | |
:AV open in vsplit | |
ctags: ctrl+] to go to definition | |
ctrl+t to return | |
cscope ctrl+\s symbol | |
ctrl+\c who calls it | |
ctrl+\d what functions are called by the one under cursor |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"Vundle stuff | |
set nocompatible " be iMproved, required | |
filetype off " required | |
" set the runtime path to include Vundle and initialize | |
set rtp+=~/.vim/bundle/Vundle.vim | |
call vundle#begin() | |
" alternatively, pass a path where Vundle should install plugins | |
"call vundle#begin('~/some/path/here') | |
" let Vundle manage Vundle, required | |
Plugin 'gmarik/Vundle.vim' | |
Plugin 'Valloric/YouCompleteMe' | |
Plugin 'a.vim' | |
Plugin 'scrooloose/nerdtree' | |
Plugin 'scrooloose/nerdcommenter' | |
Plugin 'kien/ctrlp.vim' | |
" All of your Plugins must be added before the following line | |
call vundle#end() " required | |
filetype plugin indent on " required | |
"youcompleteme setings | |
let g:ycm_global_ycm_extra_conf = "~/.vim/.ycm_extra_conf.py" | |
let g:ycm_confirm_extra_conf = 0 | |
"Temporarily disable youcompleteme | |
"let g:loaded_youcompleteme = 1 | |
"nerdcommenter settings | |
filetype plugin on | |
"nerdtree settings | |
"NerdTree open with ctrl - n | |
map <C-n> :NERDTreeToggle<CR> | |
"Close vim when the only window left is NerdTree | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif | |
"General settings | |
set number | |
set autoindent | |
set smartindent | |
set tabstop=4 | |
set softtabstop=4 | |
set shiftwidth=4 | |
set expandtab | |
"Case insensitive search | |
set ignorecase | |
set smartcase | |
"bash like tab completion | |
set wildmode=longest,list,full | |
set wildmenu | |
"Ctags tags file lookup | |
set tags=./tags;/ | |
"More natural vim splits | |
set splitbelow | |
set splitright | |
"Move between splits faster using only Ctrl + hjkl | |
nnoremap <C-J> <C-W><C-J> | |
nnoremap <C-K> <C-W><C-K> | |
nnoremap <C-L> <C-W><C-L> | |
nnoremap <C-H> <C-W><C-H> | |
" Resize splits easily | |
"resize current buffer by +/- 5 | |
nnoremap <C-left> :vertical resize -5<cr> | |
nnoremap <C-down> :resize +5<cr> | |
nnoremap <C-up> :resize -5<cr> | |
nnoremap <C-right> :vertical resize +5<cr> | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" CSCOPE settings for vim | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" | |
" This file contains some boilerplate settings for vim's cscope interface, | |
" plus some keyboard mappings that I've found useful. | |
" | |
" USAGE: | |
" -- vim 6: Stick this file in your ~/.vim/plugin directory (or in a | |
" 'plugin' directory in some other directory that is in your | |
" 'runtimepath'. | |
" | |
" -- vim 5: Stick this file somewhere and 'source cscope.vim' it from | |
" your ~/.vimrc file (or cut and paste it into your .vimrc). | |
" | |
" NOTE: | |
" These key maps use multiple keystrokes (2 or 3 keys). If you find that vim | |
" keeps timing you out before you can complete them, try changing your timeout | |
" settings, as explained below. | |
" | |
" Happy cscoping, | |
" | |
" Jason Duell jduell@alumni.princeton.edu 2002/3/7 | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" This tests to see if vim was configured with the '--enable-cscope' option | |
" when it was compiled. If it wasn't, time to recompile vim... | |
if has("cscope") | |
""""""""""""" Standard cscope/vim boilerplate | |
" use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t' | |
set cscopetag | |
" check cscope for definition of a symbol before checking ctags: set to 1 | |
" if you want the reverse search order. | |
set csto=0 | |
" add any cscope database in current directory | |
if filereadable("cscope.out") | |
cs add cscope.out | |
" else add the database pointed to by environment variable | |
elseif $CSCOPE_DB != "" | |
cs add $CSCOPE_DB | |
endif | |
" show msg when any other cscope db added | |
set cscopeverbose | |
""""""""""""" My cscope/vim key mappings | |
" | |
" The following maps all invoke one of the following cscope search types: | |
" | |
" 's' symbol: find all references to the token under cursor | |
" 'g' global: find global definition(s) of the token under cursor | |
" 'c' calls: find all calls to the function name under cursor | |
" 't' text: find all instances of the text under cursor | |
" 'e' egrep: egrep search for the word under cursor | |
" 'f' file: open the filename under cursor | |
" 'i' includes: find files that include the filename under cursor | |
" 'd' called: find functions that function under cursor calls | |
" | |
" Below are three sets of the maps: one set that just jumps to your | |
" search result, one that splits the existing vim window horizontally and | |
" diplays your search result in the new window, and one that does the same | |
" thing, but does a vertical split instead (vim 6 only). | |
" | |
" I've used CTRL-\ and CTRL-@ as the starting keys for these maps, as it's | |
" unlikely that you need their default mappings (CTRL-\'s default use is | |
" as part of CTRL-\ CTRL-N typemap, which basically just does the same | |
" thing as hitting 'escape': CTRL-@ doesn't seem to have any default use). | |
" If you don't like using 'CTRL-@' or CTRL-\, , you can change some or all | |
" of these maps to use other keys. One likely candidate is 'CTRL-_' | |
" (which also maps to CTRL-/, which is easier to type). By default it is | |
" used to switch between Hebrew and English keyboard mode. | |
" | |
" All of the maps involving the <cfile> macro use '^<cfile>$': this is so | |
" that searches over '#include <time.h>" return only references to | |
" 'time.h', and not 'sys/time.h', etc. (by default cscope will return all | |
" files that contain 'time.h' as part of their name). | |
" To do the first type of search, hit 'CTRL-\', followed by one of the | |
" cscope search types above (s,g,c,t,e,f,i,d). The result of your cscope | |
" search will be displayed in the current window. You can use CTRL-T to | |
" go back to where you were before the search. | |
" | |
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR> | |
nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> | |
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR> | |
" Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type | |
" makes the vim window split horizontally, with search result displayed in | |
" the new window. | |
" | |
" (Note: earlier versions of vim may not have the :scs command, but it | |
" can be simulated roughly via: | |
" nmap <C-@>s <C-W><C-S> :cs find s <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@>s :scs find s <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@>g :scs find g <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@>c :scs find c <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@>t :scs find t <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@>e :scs find e <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@>f :scs find f <C-R>=expand("<cfile>")<CR><CR> | |
nmap <C-@>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> | |
nmap <C-@>d :scs find d <C-R>=expand("<cword>")<CR><CR> | |
" Hitting CTRL-space *twice* before the search type does a vertical | |
" split instead of a horizontal one (vim 6 and up only) | |
" | |
" (Note: you may wish to put a 'set splitright' in your .vimrc | |
" if you prefer the new window on the right instead of the left | |
nmap <C-@><C-@>s :vert scs find s <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@><C-@>g :vert scs find g <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@><C-@>c :vert scs find c <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@><C-@>t :vert scs find t <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@><C-@>e :vert scs find e <C-R>=expand("<cword>")<CR><CR> | |
nmap <C-@><C-@>f :vert scs find f <C-R>=expand("<cfile>")<CR><CR> | |
nmap <C-@><C-@>i :vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> | |
nmap <C-@><C-@>d :vert scs find d <C-R>=expand("<cword>")<CR><CR> | |
""""""""""""" key map timeouts | |
" | |
" By default Vim will only wait 1 second for each keystroke in a mapping. | |
" You may find that too short with the above typemaps. If so, you should | |
" either turn off mapping timeouts via 'notimeout'. | |
" | |
"set notimeout | |
" | |
" Or, you can keep timeouts, by uncommenting the timeoutlen line below, | |
" with your own personal favorite value (in milliseconds): | |
" | |
"set timeoutlen=4000 | |
" | |
" Either way, since mapping timeout settings by default also set the | |
" timeouts for multicharacter 'keys codes' (like <F1>), you should also | |
" set ttimeout and ttimeoutlen: otherwise, you will experience strange | |
" delays as vim waits for a keystroke after you hit ESC (it will be | |
" waiting to see if the ESC is actually part of a key code like <F1>). | |
" | |
"set ttimeout | |
" | |
" personally, I find a tenth of a second to work well for key code | |
" timeouts. If you experience problems and have a slow terminal or network | |
" connection, set it higher. If you don't set ttimeoutlen, the value for | |
" timeoutlent (default: 1000 = 1 second, which is sluggish) is used. | |
" | |
"set ttimeoutlen=100 | |
endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Partially stolen from https://bitbucket.org/mblum/libgp/src/2537ea7329ef/.ycm_extra_conf.py | |
import os | |
import ycm_core | |
# These are the compilation flags that will be used in case there's no | |
# compilation database set (by default, one is not set). | |
# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR. | |
flags = [ | |
'-Wall', | |
'-Wextra', | |
'-Werror', | |
'-Wc++98-compat', | |
'-Wno-long-long', | |
'-Wno-variadic-macros', | |
'-fexceptions', | |
# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which | |
# language to use when compiling headers. So it will guess. Badly. So C++ | |
# headers will be compiled as C headers. You don't want that so ALWAYS specify | |
# a "-std=<something>". | |
# For a C project, you would set this to something like 'c99' instead of | |
# 'c++11'. | |
'-std=c++11', | |
# ...and the same thing goes for the magic -x option which specifies the | |
# language that the files to be compiled are written in. This is mostly | |
# relevant for c++ headers. | |
# For a C project, you would set this to 'c' instead of 'c++'. | |
'-x', 'c++', | |
# This path will only work on OS X, but extra paths that don't exist are not | |
# harmful | |
'-isystem', '/System/Library/Frameworks/Python.framework/Headers', | |
'-isystem', '/usr/local/include', | |
'-isystem', '/usr/local/include/eigen3', | |
'-I', 'include' | |
'-I.' | |
] | |
# Set this to the absolute path to the folder (NOT the file!) containing the | |
# compile_commands.json file to use that instead of 'flags'. See here for | |
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html | |
# | |
# Most projects will NOT need to set this to anything; you can just change the | |
# 'flags' list of compilation flags. Notice that YCM itself uses that approach. | |
compilation_database_folder = '' | |
if compilation_database_folder: | |
database = ycm_core.CompilationDatabase( compilation_database_folder ) | |
else: | |
database = None | |
def DirectoryOfThisScript(): | |
return os.path.dirname( os.path.abspath( __file__ ) ) | |
def MakeRelativePathsInFlagsAbsolute( flags, working_directory ): | |
if not working_directory: | |
return list( flags ) | |
new_flags = [] | |
make_next_absolute = False | |
path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ] | |
for flag in flags: | |
new_flag = flag | |
if make_next_absolute: | |
make_next_absolute = False | |
if not flag.startswith( '/' ): | |
new_flag = os.path.join( working_directory, flag ) | |
for path_flag in path_flags: | |
if flag == path_flag: | |
make_next_absolute = True | |
break | |
if flag.startswith( path_flag ): | |
path = flag[ len( path_flag ): ] | |
new_flag = path_flag + os.path.join( working_directory, path ) | |
break | |
if new_flag: | |
new_flags.append( new_flag ) | |
return new_flags | |
def FlagsForFile( filename ): | |
if database: | |
# Bear in mind that compilation_info.compiler_flags_ does NOT return a | |
# python list, but a "list-like" StringVec object | |
compilation_info = database.GetCompilationInfoForFile( filename ) | |
final_flags = MakeRelativePathsInFlagsAbsolute( | |
compilation_info.compiler_flags_, | |
compilation_info.compiler_working_dir_ ) | |
else: | |
relative_to = DirectoryOfThisScript() | |
final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) | |
return { | |
'flags': final_flags, | |
'do_cache': True | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment