From 56eab848f971f98afc17687e449cc8031035af6f Mon Sep 17 00:00:00 2001 From: lhark Date: Thu, 21 Feb 2019 00:33:55 -0500 Subject: [PATCH] [vim] Basic config imrovements and base16 theme link --- vim/colors | 1 + vim/colors/base16-default-dark.vim | 1 - vimrc | 166 +++++++++++++++++++++++------ 3 files changed, 132 insertions(+), 36 deletions(-) create mode 120000 vim/colors delete mode 120000 vim/colors/base16-default-dark.vim diff --git a/vim/colors b/vim/colors new file mode 120000 index 0000000..c8933d8 --- /dev/null +++ b/vim/colors @@ -0,0 +1 @@ +../themes/base16-vim/colors \ No newline at end of file diff --git a/vim/colors/base16-default-dark.vim b/vim/colors/base16-default-dark.vim deleted file mode 120000 index bcc1c6d..0000000 --- a/vim/colors/base16-default-dark.vim +++ /dev/null @@ -1 +0,0 @@ -../../themes/base16-vim/colors/base16-default-dark.vim \ No newline at end of file diff --git a/vimrc b/vimrc index e04b8f1..a7aff21 100644 --- a/vimrc +++ b/vimrc @@ -1,9 +1,38 @@ -set autochdir set nocompatible " Allow backspacing over everything in insert mode. set backspace=indent,eol,start set number set relativenumber +"[Hide/show the white-space and more invisible symbols]" +set list +set listchars=nbsp:¬,trail:- +"set listchars+=tab:│\ , +set listchars+=tab:▸\ , +set nojoinspaces +"[Indent & Tab/mode-line settings]" +set breakindent +set nopaste +set smarttab +set tabstop=4 " tabs size on screen " +set expandtab " inserts spaces " +set autoindent +set copyindent " copy existing tab/spaces mix on newline " +set smartindent " overruled by cindent " +set cinwords=except,finally,def,class,with,do,if,elif,else,for,while,try,switch +set cinoptions+=l1 " switch case label alignement, :h cinoptions-values " +set shiftwidth=4 " number of space to use on indent. Use tabstop if 0" +"set softtabstop=4 +"[Matching chars]" +set showmatch +set matchpairs=\":\" +set matchpairs+=(:) +set matchpairs+={:} +set matchpairs+=[:] +"[TextWidth settings]" +set textwidth=0 +"[Look for a single modeline in files]" +set modeline +set modelines=1 set history=200 " keep 200 lines of command line history set ruler " show the cursor position all the time @@ -20,6 +49,46 @@ set history=1000 set nowritebackup set undolevels=5000 +" Show @@@ in the last line if it is truncated. +set display=truncate +"[Splitting rules]" +set splitbelow +set splitright +set equalalways + +" Show a few lines of context around the cursor. +set scrolloff=5 + +set autochdir +set autoread +set autowrite + +"[Shared with OS clipboard]" +set clipboard=unnamed + +"[For regular expressions turn magic on, use \v to get regex parent]" +set magic +"[Search settings]" +set hlsearch +set incsearch +set smartcase +set ignorecase +set wrapscan +"[When on, the ":substitute" flag 'g' is default on]" +set nogdefault + + +"[Kitty doesn't support background color erase]" +let &t_ut='' +let base16colorspace=256 +set background=dark +colorscheme base16-default-dark +"[Fix background transparency]" +if has("autocmd") + autocmd ColorScheme * highlight Normal ctermbg=None + autocmd ColorScheme * highlight NonText ctermbg=None +endif + "[Define the leader key]" let mapleader="," @@ -55,21 +124,20 @@ map Q gq "[Reflow current paragraph]" "[http://stevelosh.com/blog/2010/09/coming-home-to-vim/]" nnoremap q gqip +" http://stackoverflow.com/questions/1005/getting-root-permissions-on-a-file-inside-of-vi +cmap w!! w !sudo tee >/dev/null % +"[To disable the arrow keys]" +for prefix in ['i', 'n', 'v'] + for key in ['', '', '', ''] + execute prefix . "noremap " . key . " " + endfor +endfor -" Show @@@ in the last line if it is truncated. -set display=truncate - -" Show a few lines of context around the cursor. Note that this makes the -" text scroll if you mouse-click near the start or end of the window. -set scrolloff=5 - -let base16colorspace=256 -colorscheme base16-default-dark " Do incremental searching when it's possible to timeout. if has('reltime') - set incsearch + set incsearch endif " LaTeX ftdetect @@ -78,38 +146,66 @@ let g:tex_flavor = "latex" " Switch syntax highlighting on when the terminal has colors or when using the " GUI (which always has colors). if &t_Co > 2 || has("gui_running") - " Revert with ":syntax off". - syntax on + " Revert with ":syntax off". + syntax on - " I like highlighting strings inside C comments. - " Revert with ":unlet c_comment_strings". - let c_comment_strings=1 + " I like highlighting strings inside C comments. + " Revert with ":unlet c_comment_strings". + let c_comment_strings=1 endif +" +"[Remove tabs and spaces at the end of lines]" +function! DeleteTrailingTWS() + if &ft =~ 'diff' + return + end + normal mb + silent %s/[ \t]*$//g + silent %s/\s\+$//ge + normal 'b +endfunction +"[Make the scripts executable]" +function! ChangeScriptMode() + if getline(1) =~ "#!" + if getline(1) =~ "bin/" + silent !chmod +x + endif + endif +endfunction " Only do this part when compiled with support for autocommands. if has("autocmd") - " Enable file type detection. - " Use the default filetype settings, so that mail gets 'tw' set to 72, - " 'cindent' is on in C files, etc. - " Also load indent files, to automatically do language-dependent indenting. - " Revert with ":filetype off". - filetype plugin indent on + " Enable file type detection. + " Use the default filetype settings, so that mail gets 'tw' set to 72, + " 'cindent' is on in C files, etc. + " Also load indent files, to automatically do language-dependent indenting. + " Revert with ":filetype off". + filetype plugin indent on - " Put these in an autocmd group, so that you can revert them with: - " ":augroup vimStartup | au! | augroup END" - augroup vimStartup - au! + " Put these in an autocmd group, so that you can revert them with: + " ":augroup vimStartup | au! | augroup END" + augroup vimStartup + au! - " When editing a file, always jump to the last known cursor position. - " Don't do it when the position is invalid, when inside an event handler - " (happens when dropping a file on gvim) and for a commit message (it's - " likely a different one than last time). - autocmd BufReadPost * - \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit' - \ | exe "normal! g`\"" - \ | endif + " When editing a file, always jump to the last known cursor position. + " Don't do it when the position is invalid, when inside an event handler + " (happens when dropping a file on gvim) and for a commit message (it's + " likely a different one than last time). + autocmd BufReadPost * + \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit' + \ | exe "normal! g`\"" + \ | endif - augroup END + augroup END + " + "[Do not clean up trailing spaces in binary mode]" + if !&binary + autocmd BufWritePre * call DeleteTrailingTWS() + endif + + if has("unix") || has("mac") + autocmd BufWritePost * call ChangeScriptMode() + endif endif " has("autocmd")