Created
November 7, 2021 10:37
-
-
Save UncleKo/aec8ccf47dbcaebf10aa2e69ed8693a4 to your computer and use it in GitHub Desktop.
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
" copy and paste | |
source $VIMRUNTIME/mswin.vim | |
filetype on | |
filetype plugin on | |
filetype indent on | |
syntax on | |
set autowrite | |
set ruler | |
let mapleader = "," | |
set ignorecase | |
set hlsearch | |
set autoindent | |
set smartindent | |
set fileencoding=utf-8 | |
set encoding=utf-8 | |
set backspace=indent,eol,start | |
set ts=2 sts=2 sw=2 expandtab | |
set timeoutlen=200 | |
set smartcase | |
set gdefault | |
set incsearch | |
set showmatch | |
set winwidth=8 | |
set guioptions=aA | |
set guioptions=rmc | |
set guioptions-=Be | |
set number | |
set noswapfile | |
set visualbell | |
" set cursorline | |
"Map a change directory to the desktop - Mac specific | |
nmap <leader>d :cd ~/Desktop<cr>:e.<cr> | |
"Shortcut for editing vimrc file in a new tab | |
nmap <leader>ev :tabedit $MYVIMRC<cr> | |
"Faster shortcut for commenting. Requires T-Comment plugin | |
map <leader>c <c-_><c-_> | |
"Saves time; maps the spacebar to colon | |
nmap <space> : | |
"Automatically change current directory to that of the file in the buffer | |
autocmd BufEnter * cd %:p:h | |
"Map escape key to jj -- much faster | |
imap jj <esc> | |
imap <leader>e <esc> | |
vmap <leader>e <esc> | |
" easier window navigation | |
nmap <C-h> <C-w>h | |
nmap <C-j> <C-w>j | |
nmap <C-k> <C-w>k | |
nmap <C-l> <C-w>l | |
" "------------------------" | |
" "NERDTREE PLUGIN SETTINGS | |
" "------------------------" | |
" "Shortcut for NERDTreeToggle | |
nmap <leader>nt :NERDTreeToggle<cr> | |
" | |
" "Show hidden files in NerdTree | |
let NERDTreeShowHidden=1 | |
iab lorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | |
iab llorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. | |
iab siaf (function(){})(); | |
set splitbelow | |
set splitright | |
nmap <leader>tn :tabnew<cr> | |
nmap <C-a> ggVG | |
nmap <C-b> :vsp<cr> ConqueTerm bash<cr> | |
nmap <C-c> :sp<cr> ConqueTerm bash<cr> | |
" disable auto-creating comments on ENTER press | |
inoremap <expr> <enter> getline('.') =~ '^\s*//' ? '<enter><esc>S' : '<enter>' | |
nnoremap <expr> O getline('.') =~ '^\s*//' ? 'O<esc>S' : 'O' | |
nnoremap <expr> o getline('.') =~ '^\s*//' ? 'o<esc>S' : 'o' | |
" let g:user_emmet_leader_key='<C-Z>' | |
" set fileencodings=iso-2022-jp,euc-jp,cp932,utf8,default,latin1 | |
" set fileencodings=ucs-bom,utf-8,sjis,default | |
" WatchForChanges | |
" If you are using a console version of Vim, or dealing | |
" with a file that changes externally (e.g. a web server log) | |
" then Vim does not always check to see if the file has been changed. | |
" The GUI version of Vim will check more often (for example on Focus change), | |
" and prompt you if you want to reload the file. | |
" | |
" There can be cases where you can be working away, and Vim does not | |
" realize the file has changed. This command will force Vim to check | |
" more often. | |
" | |
" Calling this command sets up autocommands that check to see if the | |
" current buffer has been modified outside of vim (using checktime) | |
" and, if it has, reload it for you. | |
" | |
" This check is done whenever any of the following events are triggered: | |
" * BufEnter | |
" * CursorMoved | |
" * CursorMovedI | |
" * CursorHold | |
" * CursorHoldI | |
" | |
" In other words, this check occurs whenever you enter a buffer, move the cursor, | |
" or just wait without doing anything for 'updatetime' milliseconds. | |
" | |
" Normally it will ask you if you want to load the file, even if you haven't made | |
" any changes in vim. This can get annoying, however, if you frequently need to reload | |
" the file, so if you would rather have it to reload the buffer *without* | |
" prompting you, add a bang (!) after the command (WatchForChanges!). | |
" This will set the autoread option for that buffer in addition to setting up the | |
" autocommands. | |
" | |
" If you want to turn *off* watching for the buffer, just call the command again while | |
" in the same buffer. Each time you call the command it will toggle between on and off. | |
" | |
" WatchForChanges sets autocommands that are triggered while in *any* buffer. | |
" If you want vim to only check for changes to that buffer while editing the buffer | |
" that is being watched, use WatchForChangesWhileInThisBuffer instead. | |
" | |
command! -bang WatchForChanges :call WatchForChanges(@%, {'toggle': 1, 'autoread': <bang>0}) | |
command! -bang WatchForChangesWhileInThisBuffer :call WatchForChanges(@%, {'toggle': 1, 'autoread': <bang>0, 'while_in_this_buffer_only': 1}) | |
command! -bang WatchForChangesAllFile :call WatchForChanges('*', {'toggle': 1, 'autoread': <bang>0}) | |
" WatchForChanges function | |
" | |
" This is used by the WatchForChanges* commands, but it can also be | |
" useful to call this from scripts. For example, if your script executes a | |
" long-running process, you can have your script run that long-running process | |
" in the background so that you can continue editing other files, redirects its | |
" output to a file, and open the file in another buffer that keeps reloading itself | |
" as more output from the long-running command becomes available. | |
" | |
" Arguments: | |
" * bufname: The name of the buffer/file to watch for changes. | |
" Use '*' to watch all files. | |
" * options (optional): A Dict object with any of the following keys: | |
" * autoread: If set to 1, causes autoread option to be turned on for the buffer in | |
" addition to setting up the autocommands. | |
" * toggle: If set to 1, causes this behavior to toggle between on and off. | |
" Mostly useful for mappings and commands. In scripts, you probably want to | |
" explicitly enable or disable it. | |
" * disable: If set to 1, turns off this behavior (removes the autocommand group). | |
" * while_in_this_buffer_only: If set to 0 (default), the events will be triggered no matter which | |
" buffer you are editing. (Only the specified buffer will be checked for changes, | |
" though, still.) If set to 1, the events will only be triggered while | |
" editing the specified buffer. | |
" * more_events: If set to 1 (the default), creates autocommands for the events | |
" listed above. Set to 0 to not create autocommands for CursorMoved, CursorMovedI, | |
" (Presumably, having too much going on for those events could slow things down, | |
" since they are triggered so frequently...) | |
function! WatchForChanges(bufname, ...) | |
" Figure out which options are in effect | |
if a:bufname == '*' | |
let id = 'WatchForChanges'.'AnyBuffer' | |
" If you try to do checktime *, you'll get E93: More than one match for * is given | |
let bufspec = '' | |
else | |
if bufnr(a:bufname) == -1 | |
echoerr "Buffer " . a:bufname . " doesn't exist" | |
return | |
end | |
let id = 'WatchForChanges'.bufnr(a:bufname) | |
let bufspec = a:bufname | |
end | |
if len(a:000) == 0 | |
let options = {} | |
else | |
if type(a:1) == type({}) | |
let options = a:1 | |
else | |
echoerr "Argument must be a Dict" | |
end | |
end | |
let autoread = has_key(options, 'autoread') ? options['autoread'] : 0 | |
let toggle = has_key(options, 'toggle') ? options['toggle'] : 0 | |
let disable = has_key(options, 'disable') ? options['disable'] : 0 | |
let more_events = has_key(options, 'more_events') ? options['more_events'] : 1 | |
let while_in_this_buffer_only = has_key(options, 'while_in_this_buffer_only') ? options['while_in_this_buffer_only'] : 0 | |
if while_in_this_buffer_only | |
let event_bufspec = a:bufname | |
else | |
let event_bufspec = '*' | |
end | |
let reg_saved = @" | |
"let autoread_saved = &autoread | |
let msg = "\n" | |
" Check to see if the autocommand already exists | |
redir @" | |
silent! exec 'au '.id | |
redir END | |
let l:defined = (@" !~ 'E216: No such group or event:') | |
" If not yet defined... | |
if !l:defined | |
if l:autoread | |
let msg = msg . 'Autoread enabled - ' | |
if a:bufname == '*' | |
set autoread | |
else | |
setlocal autoread | |
end | |
end | |
silent! exec 'augroup '.id | |
if a:bufname != '*' | |
"exec "au BufDelete ".a:bufname . " :silent! au! ".id . " | silent! augroup! ".id | |
"exec "au BufDelete ".a:bufname . " :echomsg 'Removing autocommands for ".id."' | au! ".id . " | augroup! ".id | |
exec "au BufDelete ".a:bufname . " execute 'au! ".id."' | execute 'augroup! ".id."'" | |
end | |
exec "au BufEnter ".event_bufspec . " :checktime ".bufspec | |
exec "au CursorHold ".event_bufspec . " :checktime ".bufspec | |
exec "au CursorHoldI ".event_bufspec . " :checktime ".bufspec | |
" The following events might slow things down so we provide a way to disable them... | |
" vim docs warn: | |
" Careful: Don't do anything that the user does | |
" not expect or that is slow. | |
if more_events | |
exec "au CursorMoved ".event_bufspec . " :checktime ".bufspec | |
exec "au CursorMovedI ".event_bufspec . " :checktime ".bufspec | |
end | |
augroup END | |
let msg = msg . 'Now watching ' . bufspec . ' for external updates...' | |
end | |
" If they want to disable it, or it is defined and they want to toggle it, | |
if l:disable || (l:toggle && l:defined) | |
if l:autoread | |
let msg = msg . 'Autoread disabled - ' | |
if a:bufname == '*' | |
set noautoread | |
else | |
setlocal noautoread | |
end | |
end | |
" Using an autogroup allows us to remove it easily with the following | |
" command. If we do not use an autogroup, we cannot remove this | |
" single :checktime command | |
" augroup! checkforupdates | |
silent! exec 'au! '.id | |
silent! exec 'augroup! '.id | |
let msg = msg . 'No longer watching ' . bufspec . ' for external updates.' | |
elseif l:defined | |
let msg = msg . 'Already watching ' . bufspec . ' for external updates' | |
end | |
echo msg | |
let @"=reg_saved | |
endfunction | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment