猛男利器-vim
你看到的这篇文章是使用vim编辑而成
我在上一句篇文章里面已经讲解了如何配置ubuntu子系统,既然ubuntu都已经装上了,那怎么能缺少vim呢?
值得高兴的是,ubuntu本身就自带了vim编辑器,但是糟糕的是,自带的vim编辑器却并没有我们想象的那样容易上手,于是我开了这样一篇文章来记录博主配置vim的时候遇到的坑
1.基础配置文件
vim的配置文件是在~目录下的,所以我们首先编辑~目录下的.vimrc
文件,如果目录下没有这个文件,直接生成一个新的文件就行
打开以后,应该是什么都没有的,这里博主推荐一些基础的配置
" 基础设置 "
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set nu
set autoindent
set cindent
上面的配置博主也是借鉴的别人的,大致意思就是设置了缩进默认4格,设置了自动缩进,设置了显示行号
2.显示头部注释
在vscode里面,我安装了koroFileHeader用来显示头部文档,因此,在vim里,头部文档也是不可或缺的一部分
这里就直接修改.vimrc文件就可以实现相似的效果,在.vimrc文件的末尾添加如下几行代码
" add header comments "
autocmd BufNewFile *.[ch],*.js,*.cpp,*.c,*.py exec ":call SetTitle()"
func SetComment_ch()
call setline(1, "/*")
call setline(2, "* ===============================================")
call setline(3, "* Filename: ".expand("%:t"))
call setline(4, "* Description: ")
call setline(5, "* Website: https://grimoire.cn")
call setline(6, "* Copyright (c) ".strftime("%Y")." Mr.Sen. All rights reserved.")
call setline(7, "* ===============================================")
call setline(8, "*/")
endfunc
func SetTitle()
if &filetype == 'cpp'
call SetComment_ch()
call setline(9, "")
call setline(10, "#include <bits/stdc++.h>")
call setline(11, "using namespace std;")
elseif &filetype == 'javascript'
call SetComment_ch()
endif
endfunc
上述代码就是可以在生成新文件时,生成一个头部文档,大致理解一下,读者可以照猫画虎自己写一个
3.配置代码一键运行
个人感觉最重要的就是这个了,配置代码一键运行,就不用老是单独退出编辑器再在终端里面写编译指令之类的了
代码按照以下格式书写
" 一键编译运行 "
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec '!g++ % -o %< && time ./%<'
elseif &filetype == 'cpp'
exec '!g++ % -o %< && time ./%<'
elseif &filetype == 'python'
exec '!time python3 %'
elseif &filetype == 'javascript'
exec '!time node %'
endif
endfunc
当然,要让上面的代码正常运行,你还得安装g++等能运行你代码的编译器或者解释器之类的东西
上面的代码就已经将F5按键映射到了CompileRunGcc()函数上了,按一下F5就可以一键编译运行了
4.配置一键复制
因为博主本身有复制代码的需求,所以需要将vim里的代码复制到windows的系统剪贴板里,我测试过了大部分的网上的代码,都不能实现这个功能(“毕竟我这个是基于wsl的,并不是直接在linux环境下运行的”)
最后终于找到了一个可行的办法--使用:w !clip.exe
指令
通过将键盘的F6映射到函数上,我实现了一键复制代码
" 复制代码 "
map <F6> :call CopyToBorad()<CR>
func CopyToBorad()
exec ":w !clip.exe"
endfunc
5.先把坑开在这里吧
6.完整代码
et tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set nu
set autoindent
set cindent
set clipboard=unnamed
" 一键编译运行 "
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec '!g++ % -o %< && time ./%<'
elseif &filetype == 'cpp'
exec '!g++ % -o %< && time ./%<'
elseif &filetype == 'python'
exec '!time python3 %'
elseif &filetype == 'javascript'
exec '!time node %'
endif
endfunc
" add header comments "
autocmd BufNewFile *.[ch],*.js,*.cpp,*.c,*.py exec ":call SetTitle()"
func SetComment_ch()
call setline(1, "/*")
call setline(2, "* ===============================================")
call setline(3, "* Filename: ".expand("%:t"))
call setline(4, "* Description: ")
call setline(5, "* Website: https://grimoire.cn")
call setline(6, "* Copyright (c) ".strftime("%Y")." Mr.Sen. All rights reserved.")
call setline(7, "* ===============================================")
call setline(8, "*/")
endfunc
func SetComment_sh()
call setline(1, "'''")
call setline(2, "* ===============================================")
call setline(3, "* Filename: ".expand("%:t"))
call setline(4, "* Description:")
call setline(5, "* Website: https://grimoire.cn")
call setline(6, "* Copyright (c) ".strftime("%Y")." Mr.Sen. All rights reserved.")
call setline(7, "* ===============================================")
call setline(8, "'''")
endfunc
func SetTitle()
if &filetype == 'cpp'
call SetComment_ch()
call setline(9, "")
call setline(10, "#include <bits/stdc++.h>")
call setline(11, "using namespace std;")
elseif &filetype == 'javascript'
call SetComment_ch()
elseif &filetype == 'python'
call SetComment_sh()
endif
endfunc
" 复制代码 "
map <F6> :call CopyToBorad()<CR>
func CopyToBorad()
exec ":w !clip.exe"
endfunc
作者:NorthCity1984
出处:https://grimoire.cn/linux/vim.html
版权:本文《猛男利器-- vim》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:https://grimoire.cn/linux/vim.html
版权:本文《猛男利器-- vim》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
谢谢大佬