美文网首页
为什么使用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编程呢?

    下边是我的vimrc文件,从什么时候开始使用vim编程的呢?大概也得说是去年这个时候开始的吧。更确切点说是2011...

  • VIM 操作记录

    @(linux 编程)[vim, 技能, VIM, 开发技能, 工具使用] 使用vim 大概有2年,但是感觉一直停...

  • vim 插件使用记录

    vim 插件使用 @(linux 编程)[开发技能, 工具使用] 前面记录过一篇vim操作记录此处记录一些vim的...

  • vim模板插件vim-template的使用

    vim模板插件vim-template的使用 之前使用IDE编程,模板是最基本的功能,现在切换到vim,用惯了模板...

  • Linux中的编程工具

    vim编辑器vim是Linux中开发和编程的利器,掌握好vim的使用技巧,效率将比使用GUI的程序更高vim的三种...

  • Vim 文本对象指南 (2)

    接 Vim 文本对象 (1), 关于插件使用, 可以查看完整配置 space-vim. 编程语言的文本对象 Vim...

  • Shell编程-vim使用

    什么是vim     在早期的Linux中vi一直是各种文本文件的默认编辑器,类似于Windows中的记事本,适合...

  • 爬虫之python scrapy副本篇

    1. 环境配置 [安利] vim 为什么要用vim呢?因为打开vim你会看到 Help poor children...

  • Vim的保存和退出命令

    当我们使用Vim编辑器打开一个文件时,怎样退出并保存呢? 终端输入命令vim 可以使用Vim...

  • Vim基本使用方法

    为什么要学习Vim,Vim和Vi的区别,Vim的基本使用方法(部分)为什么很多大型网站都采用Linux作为服务器?...

网友评论

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

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