平时用Vim基本上也就是在服务器上编辑配置文件.
最近到了新公司,发现同事们都用的是vim[好牛逼是不是],哈哈.
自己平时用ide习惯了,突然想,要不也试试本地的,反正是折腾.记录一下吧
只需要找到vimrc配置文件就行,在终端输入下面的指令,就可以打开配置文件
cp /usr/share/vim/vimrc ~/.vimrc
~/.vimrc
然后在末尾加上
syntax on
set nu!
set autoindent
分别是语法高亮、行号、自动缩进.
保存下,再开vim发现就已经变样了.好easy是不是.
给些参数的参考
set hlsearch "高亮度反白
set backspace=2 "可随时用倒退键删除
set autoindent "自动缩排
set ruler "可显示最后一行的状态
set showmode "左下角那一行的状态
set nu "可以在每一行的最前面显示行号
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示
set wrap "自动折行
set shiftwidth=4
set tabstop=4
set softtabstop=4
set expandtab "将tab替换为相应数量空格
set smartindent
下面可根据自己的需要,可以不选用
set guifont=Dorid Sans Mono:h14:uft8 "gvim字体设置
set encoding=utf8 "设置内部编码为utf8
set fileencoding=utf8 "当前编辑的文件编码
set fileencodings=uft8-bom,utf8,gbk,gb2312,big5 "打开支持编码的文件
"解决consle输出乱码
language messages zh_CN.utf-8
"解决菜单乱码
source VIMRUNTIME/delmenu.vimsourceVIMRUNTIME/menu.vim
我们继续折腾
上面的样子是不是感觉好丑.
打开官网,据说wombat256这个主题不错.我们从官网捞下来 https://vim.sourceforge.io/scripts/script.php?script_id=2465
下载了一个wombat256.vim
文件,放到~/.vim/colors/
目录下.别告诉我你没这目录,自己想办法...
然后我们再来改改上面那个配置文件.vimrc
再加上
colorscheme wombat256
再试试.其实我个人感觉wombat256mod比wombat256好看多了.哈哈
好了,再次打开你会发现样式变了...
如果是VIM7.0以上,不需要再下载phpcomplete.vim
这个插件,因为安装时自带了,在目录/usr/share/vim/vim74/autoload/phpcomplete.vim
中。
在~/.vimrc
中添加这样两行:
``
filetype plugin on
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
``
如何使用?我也不会用好不好...只知道这货自带了...
vim的键映射map,它有五种前缀,对应着vim中的五种模式:
nore前缀: 非递归
n前缀: 在普通模式下生效
v前缀: 在可视模式下生效
i前缀: 在插入模式下生效
c前缀: 在EX命令模式下生效
通过不同的前缀,就能明确告诉vim,我们自定义的快捷键在哪种模式下生效。
除此之外,还要配合键表:
<k0>-<k9> 小键盘数字0到9
<S-x> 大写S配合x,意味着shift+x组合键
<C-x> 大写C配合x,意味着ctrl+x组合键
<A-x> 大写A配合x,意味着alt+x组合键
<ESC> ESC键
<BS> backspace退格键
<CR> ENTER回车键
<Space> 空格键
<Shift> shift键
<Ctrl> ctrl键
<Alt> alt键
<F1>-<F12> F1到F12功能键
尽管能映射的键表非常丰富,但因为某些历史原因,ALT几乎无法映射。
同时CTRL键被linux系统频繁使用,F1到F12功能键某些也被vim占用。
比如F1是帮助,这些都不适合用来映射,以免造成快捷键冲突。
~/.vimrc
配置文件属于文本文件,我们用vim打开,把以下的修改写入vimrc,完成后千万不要忘记保存退出。
无数的初学者都被vim反人类的h,j,k,l光标移动折磨,所以个人把它修改成更符合习惯的j,k,l,i
i本身属于插入模式开关,映射后被占用了,以后只能使用a来切换插入模式。
"映射上下左右的光标移动
nnoremap i k
nnoremap k j
nnoremap j h
使用前缀nore,表明不递归,否则按下i就等于按下k,就等于按下j,最后结果乱套。
vim自带的行光标移动也不方便,移动到行首^,需要按shift+6,移动到行尾$,需要按shift+4。
个人也把它们进行映射:
"行光标移动
nmap lh ^
nmap le $
连续按下lh就表明移动到行首,lh可以理解成line_head,le理解成line_end。
vim的映射不仅能提供单个按键,也能提供一系列按键操作映射,类似于宏操作。
这时候可能许多初学者跟我一样,迫切的想把保存文件功能,映射成Windows下的ctrl+s
:
imap <C+s> <ESC>:w<CR>a
用imap表明插入模式下有效 , 后面的<ESC>:w <CR>a 作为整体看待。
事实上这样映射后,按ctrl+s会发现vim“定住”了,按什么键屏幕上都没反映,最后只能强行关闭。
为什么呢?这是因为ctrl+x的组合键,不少被linux系统占用了,ctrl+s是暂停功能。
而操作系统的优先级更高,当我们按下ctrl+s的时候,它会首先执行操作系统的功能。要退出ctrl+s暂停状态,按下ctrl+q恢复。
所以前面说,尽管键表映射非常丰富,但实际上并非不受限制的随意映射。
我们改换下思路,可以这样做:
"文件保存与退出
nmap fw :w<CR>
nmap fq :q<CR>
nmap fwq :wq<CR>
在普通模式,快速按下fw,就相当于输入了:w<CR>,fw可以理解成file_write。
我们可能需要频繁变更 .vimrc,要让变更内容生效,一般的做法是先保存 .vimrc 再重启 vim,太繁琐了。
增加如下设置,可以实现在保存 .vimrc 时自动重启加载它。
" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC
<leader>
前缀键vim自带的快捷键很多,再加上各类插件提供的快捷键,我们自己定义的快捷键,这些混合在一起,非常容易引起按键的冲突,为了环境该问题,vim引入了<leader>
前缀键。
前缀键的意思就是,在各种快捷键的最前面加上<leader>
,避免了二义性。
比如我们定义<leader>
是#号:
let mapleader="#"
配合键盘映射:
nmap <leader>w :w<CR>
在普通模式按下#w时,就完成了文件的保存工作。
选用的<leader>应该容易输入,不会和现有快捷键符号发生冲突,造成二义性。
发挥想象,实现简单的模版:
let mapleader="\"
imap <leader>if if () <CR>{};
imap <leader>main int main()<CR>{<CR> return 0;<CR>}
使用:map!命令,则只列出插入和命令行模式的映射。而:imap,:vmap,:omap,:nmap命令则只是列出相应模式下的映射。
其它的再说...自己开发还是习惯ide.哈哈
Nerdtree一些相关快捷键
t 在标签页中打开
gT 切换到前一个tab
g t 切换到后一个tab
crtl+w 多次切换工作区与目录
p 到上层目录
P 到根目录
?显示帮助