You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
4.9 KiB
Plaintext

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()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" utils
Plugin 'nvim-lua/plenary.nvim'
" LSP, syntax etc.
Plugin 'davidhalter/jedi-vim'
Plugin 'neoclide/coc.nvim'
Plugin 'yaegassy/coc-ansible'
Plugin 'pprovost/vim-ps1'
Plugin 'pearofducks/ansible-vim'
" csv magic
Plugin 'mechatroner/rainbow_csv'
" ChatGPT plugin
Plugin 'CamdenClark/flyboy'
" file browser
Plugin 'nvim-tree/nvim-tree.lua'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" see :h vundle for more details or wiki for FAQ
" general stuff
colorscheme slate
let g:mapleader = ","
syntax on
set ignorecase
set smartcase " Include only uppercase words with uppercase search term
set hlsearch
set tabstop=2
set shiftwidth=2
set softtabstop=4
set expandtab
set scrolloff=5 " Scroll 5 lines from top/bottom
set list " show tabs and EOL
set listchars=tab:>>,trail:-,nbsp:+,multispace:∙
set number " Show line numbers
set rnu " relative line numbers
set cursorline
" status line
set laststatus=2
" set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ [BUFFER=%n]
hi User1 ctermfg=cyan ctermbg=8
hi User2 ctermfg=green ctermbg=8
hi User3 ctermfg=yellow ctermbg=8
hi User4 ctermfg=white ctermbg=8
hi User5 ctermfg=green ctermbg=8
hi User6 ctermfg=red ctermbg=8
set statusline=
set statusline +=%1*\ %n\ %* "buffer number
set statusline +=%5*%{&ff}%* "file format
set statusline +=%3*%y%* "file type
set statusline +=%4*\ %<%F%* "full path
set statusline +=%6*%m%* "modified flag
set statusline +=%1*%=%5l%* "current line
set statusline +=%2*/%L%* "total lines
set statusline +=%3*\ %p%%%* "percentage of file
set statusline +=%1*%4v\ %* "virtual column number
set statusline +=%2*0x%04B\ %* "character under cursor
" add underscore to word delimiters
" set iskeyword-=_
" WSL Yank support
" Copy to clipboard
" set clipboard=unnamedplus
if system('uname -r') =~ "Microsoft"
augroup Yank
autocmd!
autocmd TextYankPost * :call system('/mnt/c/windows/system32/clip.exe ',@")
augroup END
endif
"map <silent> "=p :r !powershell.exe -Command Get-Clipboard<CR>
"map! <silent> <C-r>= :r !powershell.exe -Command Get-Clipboard<CR>
"noremap "+p :exe 'norm a'.system('/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command Get-Clipboard')<CR>
" Jedi Stuff
let g:jedi#force_py_version = 3
" Remember file position
:au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' | exe "normal! g`\"" | endif
" autocmd FileType python set makeprg=python3\ %
au FileType python set makeprg=pylint\ --reports=n\ --output-format=parseable\ %:p
au FileType python set efm=%A%f:%l:\ [%t%.%#]\ %m,%Z%p^^,%-C%.%#
nnoremap <C-p> :Files<Cr>
au BufNewFile,BufRead *.ps1 set fileencoding=cp1252
" try fixing italics?
set t_ZH=^[[3m
set t_ZR=^[[23m
" persistent undo
if has('persistent_undo')
set undofile
endif
" generate pw?
" r! cmd.exe /c 'python C:\Tools\pw.py 10'
" =system("cmd.exe /c 'python C:\\Tools\\pw.py 10' | tr -d '\n' | tr -d '\r'")
let pwcmd = 'cmd.exe /c "python C:\\Tools\\pw.py 10" |tr -d "\\n"|tr -d "\\r"'
:nmap <F8> "=system(pwcmd)<C-M>p
:imap <F8> <C-R>=system(pwcmd)<C-M>
" vim-ansible
au BufRead,BufNewFile */playbooks/*.yml set filetype=yaml.ansible
au BufRead,BufNewFile */playbooks/*.yml set keywordprg=ansible-doc
let g:ansible_name_highlight = 'b'
let g:ansible_extra_keywords_highlight = 1
" coc-ansible
set signcolumn=yes
let g:coc_filetype_map = {
\ 'yaml.ansible': 'ansible',
\ }
" Use tab for trigger completion with characters ahead and navigate
" NOTE: There's always complete item selected by default, you may want to enable
" no select by `"suggest.noselect": true` in your configuration file
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1) :
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Make <CR> to accept selected completion item or notify coc.nvim to format
" <C-g>u breaks current undo, please make your own choice
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
" bind code folding to space (in normal mode)
nnoremap <silent> <Space> @=(foldlevel('.')?'za':"\<Space>")<CR>
vnoremap <Space> zf
set foldmethod=indent
set foldnestmax=2
set foldlevel=1