vim配置备份及tips
terminal有新建窗口、在窗口间切换、分割窗口、全屏显示、调整大小快捷键;
shift+F10开启terminal菜单;
shift+Prtsc 截取部分区域保存至Pictures;
shift+insert 可以从系统复制到terminal,分割窗口可以从一个文件复制到另一个文件;
mkdir 新建文件夹,rm -d 删除文件夹,touch 新建文件,rm -f 删除文件;
重命名文件:mv oldname newname;
重定义路径:mv oldname /*/*/newname;
:reg 查看寄存器内容,安装gnome才能看见 + 寄存器;
复制粘贴的时候选定,然后 “+y 就可以了,不要加冒号
vim中有很强大的 map 键盘映射功能;
按 v 进入visual模式,C-v 进入 visual block 模式,shift-v 进入 visual line 模式;
vim的命令默认不显示,配置中 set showcmd 会在最下一行显示;
编辑高亮显示时首先需要开启高亮,set corsorline;
set backspace=2 重启后就可以让backspace键在insert模式下删除了;
set list 显示tab、回车键;
set expandtab 将tab换成空格,以免格式错误;
gg=G 或 n== (从当前行往下的n行)整理格式;
mac下可能需要新建 .vimrc 配置文件;
设置里点击要禁用的快捷键,按键盘“Backspace”键,就可以禁用了;
vim配置里设置映射无效,需要安装vim-gnome,卸载vim-tiny;
esc键太难按了,可以用 Ctrl + [ 代替
normal模式下按%,可以跳到匹配括号处
((, )), [[, ]], {{, }} 都可以跳转
set wildmenu 能帮你在命令行补全函数,带你走进补全的文明时代。但是要求laststus >= 2
set 后跟一个变量,再跟一个 ?可以查看变量的值 e.g. se ls? 输出laststatus=1
se cuc ( set cursorcolum) 有一个垂直的竖杠,帮看你的python代码有没有单行超过79字符
:Sex (嫑鄙视我 - -)在当前terminal查看当前文件夹,进行编辑或跳转
作者:Charles Wu
链接:https://www.zhihu.com/question/27478597/answer/36897603
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
vim真是太强了!
vim配置备份:
1 set showcmd "默认 2 set nowrap 3 “set mouse=a 4 set ruler "默认 5 set completeopt=preview,menu 6 set novisualbell 7 set matchtime=1 8 set fillchars=vert:\ ,stl:\ ,stlnc:\ 9 set clipboard+=unnamed 10 :set makeprg=g++\ -Wall\ \ % 11 autocmd FileType c,cpp map<buffer> <leader><space> :w<cr>:make<cr> 12 nnoremap <C-J> <C-W><C-J> 13 nnoremap <C-K> <C-W><C-K> 14 nnoremap <C-H> <C-W><C-H> 15 map<M-F2> :tabnew<CR> 16 map<F3> :tabnew .<CR> 17 map<C-F3> /be 18 19 20 21 syntax on 22 set number 23 set shiftwidth=4 24 set tabstop=4 25 set scrolloff=3 26 set hlsearch 27 set confirm 28 set cindent 29 map<C-A> ggVG"+y 30 31 map<F5> :call Run()<CR> 32 33 func! Run() 34 35 exec "w" 36 37 if &filetype == 'c' 38 39 exec "!g++ % -o %<" 40 41 exec "!time ./%<" 42 43 elseif &filetype == 'cpp' 44 45 exec "!g++ % -o %<" 46 47 exec "!time ./%<" 48 49 elseif &filetype == 'java' 50 51 exec "!javac %" 52 53 exec "!time java %<" 54 55 elseif &filetype == 'sh' 56 57 :!time bash % 58 59 elseif &filetype == 'python' 60 61 exec "!time python %" 62 63 elseif &filetype == 'html' 64 65 exec "!firefox % &" 66 67 elseif &filetype == 'go' 68 69 " exec "!go build %<" 70 71 exec "!time go run %" 72 73 elseif &filetype == 'mkd' 74 75 exec "!~/.vim/markdown.pl % > %.html &" 76 77 exec "!firefox %.html &" 78 79 endif 80 81 endfunc 82 83 84 set cursorline 85 highlight CursorLine cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE 86 nmap <c-v> "+gp 87 nmap <c-c> "+y 88 inoremap ( ()<ESC>i 89 inoremap [ []<ESC>i 90 inoremap { {}<ESC>i 91 inoremap ' ''<ESC>i 92 inoremap " ""<ESC>i
win10版
1 syntax on 2 set number 3 set shiftwidth=4 4 set tabstop=4 5 set scrolloff=3 6 set hlsearch 7 set confirm 8 set cindent 9 set cursorline 10 11 highlight CursorLine cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE 12 13 nmap <c-v> "+gp 14 nmap <c-c> "+y 15 inoremap ( () 16 inoremap [ [] 17 inoremap { {} 18 inoremap ' '' 19 inoremap " "" 20 map<C-A> ggVG"+y 21 22 map<F5> :call Run()<CR> 23 func! Run() 24 exec "w" 25 if &filetype == 'c' 26 exec "!g++ % -o %<" 27 exec "!%<" 28 elseif &filetype == 'cpp' 29 exec "!g++ % -o %<" 30 exec "!%<" 31 elseif &filetype == 'java' 32 exec "!javac %" 33 exec "java %<" 34 elseif &filetype == 'sh' 35 :!time bash % 36 elseif &filetype == 'python' 37 exec "python %" 38 elseif &filetype == 'html' 39 exec "!firefox % &" 40 elseif &filetype == 'go' 41 exec "!go build %<" 42 exec "go run %" 43 elseif &filetype == 'mkd' 44 exec "!~/.vim/markdown.pl % > %.html &" 45 exec "!firefox %.html &" 46 endif 47 endfunc 48 49 50 set diffexpr=MyDiff() 51 func! MyDiff() 52 let opt = '-a --binary ' 53 if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif 54 if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif 55 let arg1 = v:fname_in 56 if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif 57 let arg1 = substitute(arg1, '!', '\!', 'g') 58 let arg2 = v:fname_new 59 if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif 60 let arg2 = substitute(arg2, '!', '\!', 'g') 61 let arg3 = v:fname_out 62 if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif 63 let arg3 = substitute(arg3, '!', '\!', 'g') 64 if $VIMRUNTIME =~ ' ' 65 if &sh =~ '\<cmd' 66 if empty(&shellxquote) 67 let l:shxq_sav = '' 68 set shellxquote& 69 endif 70 let cmd = '"' . $VIMRUNTIME . '\diff"' 71 else 72 let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' 73 endif 74 else 75 let cmd = $VIMRUNTIME . '\diff' 76 endif 77 let cmd = substitute(cmd, '!', '\!', 'g') 78 silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 79 if exists('l:shxq_sav') 80 let &shellxquote=l:shxq_sav 81 endif 82 endfunc
win10上的按键映射好像用不了。。不能一键运行,不太好用,不过比之前美观
1 syntax on 2 set number 3 set ruler 4 set shiftwidth=4 5 set tabstop=4 6 set scrolloff=3 7 set hlsearch 8 set confirm 9 set cindent 10 set cursorline 11 set guifont=Cascadia\ Mono:h12 12 colorscheme desert 13 set background=dark 14 highlight CursorLine cterm=NONE ctermbg=black ctermfg=blue guibg=NONE guifg=NONE 15 16 nmap <c-v> "+gp 17 nmap <c-c> "+y 18 map <C-A> ggVG"+y 19 20 map <F5> :call Run()<CR> 21 func! Run() 22 exec "w" 23 if &filetype == 'c' 24 exec "!g++ % -o %<" 25 exec "!%<" 26 elseif &filetype == 'cpp' 27 exec "!g++ % -o %<" 28 exec "!%<" 29 elseif &filetype == 'java' 30 exec "!javac %" 31 exec "java %<" 32 elseif &filetype == 'sh' 33 :! bash % 34 elseif &filetype == 'python' 35 exec "python %" 36 elseif &filetype == 'html' 37 exec "!firefox % &" 38 elseif &filetype == 'go' 39 exec "!go build %<" 40 exec "go run %" 41 elseif &filetype == 'mkd' 42 exec "!~/.vim/markdown.pl % > %.html &" 43 exec "!firefox %.html &" 44 endif 45 endfunc 46 47 48 set diffexpr=MyDiff() 49 func! MyDiff() 50 let opt = '-a --binary ' 51 if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif 52 if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif 53 let arg1 = v:fname_in 54 if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif 55 let arg1 = substitute(arg1, '!', '\!', 'g') 56 let arg2 = v:fname_new 57 if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif 58 let arg2 = substitute(arg2, '!', '\!', 'g') 59 let arg3 = v:fname_out 60 if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif 61 let arg3 = substitute(arg3, '!', '\!', 'g') 62 if $VIMRUNTIME =~ ' ' 63 if &sh =~ '\<cmd' 64 if empty(&shellxquote) 65 let l:shxq_sav = '' 66 set shellxquote& 67 endif 68 let cmd = '"' . $VIMRUNTIME . '\diff"' 69 else 70 let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' 71 endif 72 else 73 let cmd = $VIMRUNTIME . '\diff' 74 endif 75 let cmd = substitute(cmd, '!', '\!', 'g') 76 silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 77 if exists('l:shxq_sav') 78 let &shellxquote=l:shxq_sav 79 endif 80 endfunc
ubuntu标准版,仅含代码基本格式、复制粘贴和F5运行代码快捷键
set mouse=a set shiftwidth=4 set tabstop=4 set scrolloff=3 set hlsearch set showmatch set confirm set cindent "set fdm=indent "set nobackup nmap <c-v> "+gp nmap <c-c> "+y map <C-A> ggVG"+y map <F5> :call Run()<CR> func! Run() exec "w" if &filetype == 'c' exec "!gcc -Wall % -o %<.o" exec "!./%<.o" elseif &filetype == 'cpp' exec "!g++ -Wall % -o %<.o" exec "!./%<.o" elseif &filetype == 'sh' :! bash % elseif &filetype == 'python' exec "python %" elseif &filetype == 'java' exec "!javac %" exec "!java %<" endif endfunc
插件
Yggdroot/indentLine 很好用,划线标明代码是否对齐,加上 filetype indent on 配置就可以很方便地写代码了。