美文网首页
为什么使用vim编程呢?

为什么使用vim编程呢?

作者: 大雨滂沱在关外 | 来源:发表于2020-10-29 16:04 被阅读0次

           下边是我的vimrc文件,从什么时候开始使用vim编程的呢?大概也得说是去年这个时候开始的吧。更确切点说是2011年,没错,当年我入门编程的不是java,而是c语言。依稀记得当年培训机构的老师带着安装了虚拟机,虚拟机里边装了一个ubuntu,感觉很屌。不过后来年轻不懂事儿,荒废了几年岁月,所以至今还是一个低级开发😂😂😂
           接下来,聊一下我是如何从面向对象转成面向黑窗口开发的程序员的。从作为程序员的第一天,你就会了解到一个工具,它叫cmd(.exe)。当初掌握的两个命令dir,cd D:。后来我了解到了windows第二个牛逼的工具powershell。我险些因为powershell这个工具学习了.net这个玩意儿。我至今依然认为powershell是一个非常好的shell,面向对象,而且帮助文档特别友好。也就是在那个时候开始正经了解vim这个编辑器了吧。我记得choco install spacevim。大概有个这么个操作吧。
           接下来,我正式说说这个vim编辑器吧。

    • 自定义键位
    map ; :
    map - $
    
    • 多种模式

    这个东西意味着什么呢?就是你的键盘上的按键足够你使用了,不会为想不出来组合键而烦恼。你可以定义自己喜欢的按键在不同的模式下做不同的操作。比如最入门的insert模式下hjkl是文本的四个字符,在normal模式下就成了上下左右键了。是不是很开心。

    • 调用终端命令(! ls )

    你可能会想这个东西有什么呢?不就是一个ls嘛。那么这个操作到底意味着什么呢?你可以在vim调用所有的terminal的命令,然后在加上快捷键的方式,明白我的意思吗?是不是很开心呢?举个例子,下午写了一个html文件,旁边的同事告诉我使用右键用浏览器打开。我当时就有点小小尴尬😅,接下来我写了一行配置。使用<leader>i 一键打开html文件😂

    autocmd FileType html nnoremap <buffer> <leader>i :!/Applications/Firefox.app/Contents/MacOS/firefox-bin %:p<CR>
    
    
    let mapleader=" "
    " terminal
    let $TERM='iterm2'
    " netrw
    let g:netrw_banner=0
    let g:netrw_liststyle=3
    " python
    let g:python3_host_prog = '/usr/local/bin/python3'
    let g:python_host_prog = '/usr/bin/python2'
    colorscheme desert
    set helplang=cn
    set list
    set encoding=utf-8
    set number
    set nowrap
    set smartcase
    set showcmd
    set termguicolors
    "set verbose=9
    
    autocmd InsertLeave,WinEnter * set cursorline
    autocmd InsertEnter,WinLeave * set nocursorline
    set complete-=i   " disable scanning included files
    set complete-=t   " disable searching tags
    
    set smarttab
    set softtabstop=4
    set tabstop=4
    set shiftwidth=4
    
    set clipboard+=unnamedplus
    
    set autoindent
    set smartindent
    
    set nobackup
    set nowritebackup
    set noswapfile
    
    set nocompatible
    filetype on
    filetype plugin on
    
    set path+=**
    set wildmenu
    set wildignore=*.o,*.obj,*.class,*.bak,*/target/,*/out/,*/.vim/,*/.git/
    
    set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
    set scrolloff=4
    
    map ; :
    map - $
    map s <nop>
    map <LEADER>n :Explore .<CR>
    map <LEADER>f :find 
    map <LEADER>s :nohlsearch<CR>
    map <LEADER>t yaw<ESC>:!pbpaste \| say<CR>
    map <LEADER>r :tabedit ~/.config/nvim<CR>:lcd ~/.config/nvim<CR>
    map <LEADER>rc :edit ~/.config/nvim/init.vim<CR>
    map <LEADER>sc :source ~/.config/nvim/init.vim<CR>
    nmap N Nzz
    nmap n nzz
    nmap <tab> V>
    nmap <s-tab> V<
    vmap <tab> >gv
    vmap <s-tab> <gv
    
    
    noremap H :vertical resize+10<CR>
    noremap J :below resize+10<CR>
    noremap <C-j> <PageDown>
    noremap K :below resize-10<CR>
    noremap <C-k> <PageUp>
    noremap L :vertical resize-10<CR>
    noremap <LEADER><CR> :CocFix<CR>
    noremap <LEADER>c :CocList<CR>
    noremap <LEADER>- :tabprevious<CR>
    noremap <LEADER>= :tabNext<CR>
    noremap <LEADER>[ :bprevious<CR>
    noremap <LEADER>] :bNext<CR>
    noremap <LEADER>m :call SetMakeprg()<CR>:make %<CR>
    noremap <LEADER>q :bdelete % <CR>
    noremap cc <C-w>
    noremap co :copen 10<CR>
    noremap lg <C-w>v<Esc>:terminal lazygit<CR>
    noremap fm <C-w>v<Esc>:terminal vifm .<CR>
    noremap tt <C-w>v<Esc>:terminal <CR>i
    
    tnoremap <Esc> <C-\><C-n>
    
    nnoremap <buffer> <LEADER>i :!./% <CR>
    command! MakeTags :!ctags -R . <CR>
    
    nmap <leader><leader>t <Plug>(coc-translator-p)
    vmap <Leader><leader>t <Plug>(coc-translator-pv)
    nmap <leader><Leader>e <Plug>(coc-translator-e)
    vmap <leader><Leader>e <Plug>(coc-translator-ev)
    nmap <leader><Leader>r <Plug>(coc-translator-r)
    vmap <leader><Leader>r <Plug>(coc-translator-rv)
    
    if empty(glob('~/.local/share/nvim/site/autoload/plug.vim'))
      silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs 
         \https://raw.GitHub.com/junegunn/vim-plug/master/plug.vim
      autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
    endif
    call plug#begin("~/.config/nvim/plugged")
        Plug 'Chiel92/vim-autoformat'
        Plug 'tpope/vim-surround'
        Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
        "Plug 'puremourning/vimspector'
        Plug 'SirVer/ultisnips'
        Plug 'honza/vim-snippets'
        Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
        Plug 'airblade/vim-gitgutter'
        Plug 'terryma/vim-multiple-cursors'
    call plug#end()
    
    " 最好是quickfix这个东西可以有索引,然后直接跳转到对应的位置上就好了。
    function SetMakeprg()
        if &filetype == 'c'
            set makeprg=gcc
        elseif &filetype =='cpp'
            set makeprg=g++
        elseif &filetype == 'python'
            set makeprg=python3
        elseif &filetype == 'vim'
            set makeprg=source
        elseif &filetype == 'java'
            set makeprg=~/Library/Java/JavaVirtualMachines/jdk-14.0.1+7/Contents/Home/bin/java
        elseif &filetype == 'scala'
            set makeprg=scala
        elseif &filetype == 'js'
            set makeprg=node
        endif
    endfunction
    
    " 现在存在一个问题是第三方插件在修改这个path
    function SetPath()
        if &filetype=='java'
            set path=.,**,~/sourceSpace/jdk/src/**
        elseif &filetype == 'python'
            set path=.,**,~/Library/Python/3.7/lib/python/site-packages/**
        endif
    endfunction
    
    autocmd FileType scala nnoremap <buffer> <LEADER>i :!scala %<CR>
    autocmd FileType c nnoremap <buffer> <LEADER>i :!gcc % && ./a.out && rm ./a.out <CR>
    autocmd FileType cpp nnoremap <buffer> <LEADER>i :!g++ % && ./a.out && rm ./a.out <CR>
    autocmd FileType python nnoremap <buffer> <LEADER>i :!python3 % <CR>
    autocmd FileType sh nnoremap <buffer> <LEADER>i :sh % <CR>
    autocmd FileType go nnoremap <buffer> <LEADER>i :!go run % <CR>
    autocmd FileType java nnoremap <buffer> <LEADER>i :!/Users/zhangxiaomin/Library/Java/JavaVirtualMachines/jdk-14.0.1+7/Contents/Home/bin/java % <CR>
    autocmd FileType rust nnoremap <buffer> <LEADER>i :!cargo run <CR>
    autocmd FileType javascript nnoremap <buffer> <LEADER>i :!node % <CR>
    autocmd FileType vim,zsh,tmux nnoremap <buffer> <LEADER>i :source % <CR>
    "autocmd FileType java set path+=~/sourceSpace/jdk/src/**
    "autocmd FileType python set path+=~/Library/Python/3.7/lib/python/site-packages/**
    autocmd FileType * call SetPath()
    
    autocmd BufNewFile *.java 0r ~/.config/nvim/template/java.tpl | autocmd! BufNewFile
    autocmd BufNewFile *.py 0r ~/.config/nvim/template/python.tpl | autocmd! BufNewFile
    autocmd BufNewFile *.go 0r ~/.config/nvim/template/golang.tpl | autocmd! BufNewFile
    autocmd BufNewFile *.c 0r ~/.config/nvim/template/c.tpl | autocmd! BufNewFile
    autocmd BufNewFile *.cpp 0r ~/.config/nvim/template/cpp.tpl | autocmd! BufNewFile
    autocmd BufNewFile *.rs 0r ~/.config/nvim/template/rust.tpl | autocmd! BufNewFile
    autocmd BufNewFile *.html 0r ~/.config/nvim/template/html.tpl | autocmd! BufNewFile
    autocmd BufNewFile *.js 0r ~/.config/nvim/template/javascript.tpl | autocmd! BufNewFile
    

    相关文章

      网友评论

          本文标题:为什么使用vim编程呢?

          本文链接:https://www.haomeiwen.com/subject/gczkvktx.html