非root配置linux下vim
在机子目录下建立 .vim文件夹
例如 /home/xxx/.vim
在~文件夹下建立.vimrc文件 这是你自己配置文件
vim虽然启用了格式化高亮、行号显示,以及括号匹配、自动缩进等编辑功能,对于大多数情况都可以获得理
想的编辑体验。不过此时对.php文件的支持还不完善,需要下载专门的php插件。
下载地址:http://www.vim.org/scripts/script.php?script_id=1571
下载文件:php.tar.gz
将其中的php.vim复制到.vim/syntax目录中即可。
一开始在设置里更换主题一直无法显示,后来找到问题的原因:
一般的Linux发行版默认的终端都是16色的,但事实上几乎所有的终端都支持256色终端。
1.将Terminal设为Xterm模式:编辑->配置文件首选项->颜色 设置为自定义,内置方案选择XTerm.
2.vimrc里设置:set t_Co=256
然后就可以随便color自己喜欢到主题了。我是用的:colorscheme desert。
打造PHP IDE
IDE左侧是目录导航,中间是编辑区域,而右侧则是方法列表,用于在已经打开的文件中快速跳转。在编辑区
域按下CTRL+X键,还会显示已打开文件的列表。
其他诸如自动补全、代码模板等功能,都应有尽有。看过了漂亮的截图,我们就来一步步打造PHP IDE吧。
用NERDTree实现目录导航
在进行PHP应用开发时,同时编辑多个文件是很正常的事情。所以必须有一个方便的目录导航工具,以便在目
录结构间快速切换,找到需要编辑的文件。
vim中提供该类功能的插件很多,比较知名的有project、winmanager等。但笔者个人认为最好用的还是The
NERD Tree这个插件。NERDTree不但可以显示完整的目录树结构,还可以将任何一个目录设置为根目录。并
且提供了目录导航的书签功能,可谓非常方便。
下载地址:http://www.vim.org/scripts/script.php?script_id=1658
下载文件:NERD_tree.zip
解压缩时,要把压缩包中的目录结构完整的解压缩到$VIMvimfiles目录中。完成后,应该分别找到$VIM
vimfilesdocNERD_tree.txt文件和$VIMvimfilespluginNERD_tree.vim文件。然后在vim中输入命令:helptags
$VIMvimfilesdoc,将NERDTree的帮助文档添加到vim中。
最后在_vimrc添加如下内容:
” NERDTree
map <F8>
:NERDTreeToggle<CR>
重启vim后,按下F8键,就可以在左侧看到一个目录树了。在目录树窗口中按下?键可以查看详细的帮助信息
最常用的操作键有:
按键 | 作用 |
C(大写C键) | 将光标所在目录设置为根目录 |
u(小写u键) | 转到上一级目录 |
o(小写o键,不是“零”) | 展开(或折叠)光标所在目录的子目录。如果光标所在位置是一个文件,则在编辑窗口中打开该文件 |
此外在目录树窗口中输入目录:Bookmark
收藏名还可以将光标所在目录添加到收藏夹中。下次使
用:BookmarkToRoot
收藏名可以直接转到该目录,并且以该目录作为根目录。更多命令可以参考NERDTree的
帮助文档。
用taglist实现代码导航
解决了目录和文件导航问题,我们还要为代码之间的跳转提供辅助手段,taglist就是这样一个插件。taglist可以
列出已打开文件中定义的类、函数、常量,甚至变量。
下载地址:http://www.vim.org/scripts/script.php?script_id=273
下载文件:taglist_45.zip
压缩包需要完整解压缩到$VIMvimfiles目录,并且用:helptags
$VIMvimfilesdoc命令索引taglist插件的帮助文
档。taglist插件需要依赖ctags程序才能工作。目前常用的ctags版本是Exuberant Ctags。
sudo apt-get install ctags,然后whereis ctags,找到ctags:
/usr/bin/ctags 这目录下的ctags。
将ctags复制到$VIMvim72目录中即可。
最后在/etc/vim/vimrc添加下列内容,设置好taglist插件:
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” => Plugin configuration
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” taglist
let Tlist_Auto_Highlight_Tag = 1
let Tlist_Auto_Open = 1
let Tlist_Auto_Update = 1
let Tlist_Close_On_Select = 0
let Tlist_Compact_Format = 0
let Tlist_Display_Prototype = 0
let Tlist_Display_Tag_Scope = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Exit_OnlyWindow = 0
let Tlist_File_Fold_Auto_Close = 0
let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Hightlight_Tag_On_BufEnter = 1
let Tlist_Inc_Winwidth = 0
利用ctrl+ww来进行两个窗口之间的切换。
在taglist窗口中,可以使用下面的快捷键:
o
在一个新打开的窗口中显示光标下tag
<Space> 显示光标下tag的原型定义
u
更新taglist窗口中的tag
s
更改排序方式,在按名字排序和按出现顺序排序间切换
x
taglist窗口放大和缩小,方便查看较长的tag
+
打开一个折叠,同zo
-
将tag折叠起来,同zc
*
打开所有的折叠,同zR
=
将所有tag折叠起来,同zM
[[
跳到前一个文件
]]
跳到后一个文件
q 关闭taglist窗口
map <F6>
:TlistToggle<CR>
用AutoComplPop实现代码自动提示
点击下面网址,进去下载autocomplpop插件
http://www.vim.org/scripts/script.php?script_id=1879
下载的是一个zip文件,解压后会有三个文件夹,分别是autoload,doc,plugin。到Vim的根目录下,找到名字
和这三个一样的文件夹。不同系统目录位置不同。我的fedora是/usr/share/vim/vimfiles
按照文件夹对应的把里面的acp.vim和其他的什么文件都copy过去。然后重启Vim。这时候可能会有错误提示
Error detected while processing
/home/carlos/.vim/plugin/acp.vim:
line 13:
***** L9 library must be installed! *****
这是插件放出的一个错误提示,查看plugin里的acp.vim可以看到。是缺少L9
library库。这个也是需要下载的。地址在下面
http://www.vim.org/scripts/script.php?script_id=3252
下载下来,它也是一个插件形式,以同样的方式copy到Vim目录下。
安装完后就可以了。
再就是这个插件默认是没有设置php自动补全的,可以设置一个PHP函数字典,让其根据字典的内容进行自动
补全。
这个是一个PHP字典:.
编辑配置文件.vimrc,在文件后面加上下面的代码
au FileType php setlocal dict+=/etc/vim/php_funclist.txt
后面跟着的是字典的目录地址,根据自己的需求存放在一个地方就好。我是放到了/etc/vim/目录下。 php_funclist下载:php_funclist.tar.gz
再附加一些自动补全配置(加入到vimrc中):
php 中 一般是会在 "$", "->", "::" 后需要出现自动补全,在 .vimrc 中加入以下代码:
if !exists('g:AutoComplPop_Behavior')
let g:AutoComplPop_Behavior = {}
let g:AutoComplPop_Behavior['php'] = []
call add(g:AutoComplPop_Behavior['php'], {
'command' : "<C-x><C-o>",
'pattern' : printf('(->|::|$)k{%d,}$', 0),
'repeat' : 0,
})
endif
在 Vim 中实现括号自动补全:
:inoremap ( ()<ESC>i
:inoremap )
<c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap }
<c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ]
<c-r>=ClosePair(']')<CR>
:inoremap <
<><ESC>i
:inoremap >
<c-r>=ClosePair('>')<CR>
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "<Right>"
else
return a:char
endif
endf
这样,写代码的时候不再担心会丢掉右边的括号了,尤其是函数嵌套的时候。
安装ZenCoding插件
到http://github.com/mattn/zencoding-vim下载压缩包,然后解压到vimfiles文件夹,和上面一样,将doc
plugin
autoload三个文件夹放到相应文件夹下。然后在vim中输入helptags /etc/vim/doc
导入帮助文件.就OK了。
zencoing可以很方便的写html,一些常用命令:
输入 div>p#foo$*3>a 这样的缩写,然后按 ctrl +
y + , 来展开(注意那个逗号),展开后它应该是这个样子的
<div>
<p id="foo1">
<a href=""></a>
</p>
<p id="foo2">
<a href=""></a>
</p>
<p id="foo3">
<a href=""></a>
</p>
</div>
- 多行缩写
输入如下:
test1
test2
test3
然后进入行选择模式,选中这三行按 ctrl + y + ,,接着它会提示你要使用的tag名称,TAG: 输入 ‘ul>li* 会变成如下的样子
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
如果是输入blockquote,那么会变成这样
<blockquote>
test1
test2
test3
</blockquote>
- 跳转到下一个标签编辑位置
输入ctrl + y + n 进入插入模式
- 跳转到上一个标签编辑位置
输入ctrl + y + N 进入插入模式
- 更新标签中图片大小
假如有以下内容
<img src="foo.png" />
光标移动到img标签上,按下ctrl + y + i 该插件会自动获取foo.png的大小并插入宽高属性 看起来像这个样子
<img src="foo.png" width="32" height="48" />
- 切换注释
如有以下段
<div>
hello world
</div>
光标移动到此段落,输入ctrl + y + /变成
<!-- <div>
hello world
</div> -->
再次输入则还原
- 生成url连接
将光标移动到一个url上,如:
http://www.google.com/
输入ctrl + y + a 它会自动获取url页面的标题并生成一个连接
<a href="http://www.google.com/"></a>
Zen Coding官方提供的速查手册(PDF):http://zen-coding.googlecode.com/files/ZenCodingCheatSheet.pdf
不过一般不需要使用那么复杂的功能,一个vim就够了
我的配置
"显示行数
set number
"设置编码
set encoding=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set fileencoding=utf-8
set termencoding=utf-8
"不要使用vi的键盘模式,vim's
set nocompatible
"history文件中需要记录的行数
set history=400
"与windows共享剪贴板
set clipboard+=unnamed
"支持鼠标事件,点击定位等
set mouse=a
"侦测文件类型
filetype on
"载入文件类型插件
filetype plugin on
"为特定文件类型载入相关缩进文件
filetype indent on
"语法高亮
syntax enable
syntax on
"高亮显示匹配的括号
set showmatch
"设置缩进
"制表符为4
set tabstop=4
"统一缩进为4
set softtabstop=4
set shiftwidth=4
"
"继承前一行的缩进方式,特别适用于多行注视
set autoindent
"使用C样式的缩进
set cindent
"设置C/C++语言的具体缩进方式(以我的windows风格为例):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
"显示下划线
"set cursorline
关于c/c++语言的一些配置
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
""定义函数SetTitle,自动插入文件头
func SetTitle()
"如果文件类型为.sh文件
if &filetype == 'sh'
call setline(,"\#########################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+, "\# Author: ")
call append(line(".")+, "\# mail: ")
call append(line(".")+, "\# Created Time: ".strftime("%c"))
call append(line(".")+, "\#########################################################################")
call append(line(".")+, "\#!/bin/bash")
call append(line(".")+, "")
else
call setline(, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+, " > Author: ")
call append(line(".")+, " > Mail: ")
call append(line(".")+, " > Created Time: ".strftime("%c"))
call append(line(".")+, " ************************************************************************/")
call append(line(".")+, "")
endif
if &filetype == 'cpp'
call append(line(".")+, "#include<iostream>")
call append(line(".")+, "using namespace std;")
call append(line(".")+, "")
endif
if &filetype == 'c'
call append(line(".")+, "#include<stdio.h>")
call append(line(".")+, "")
endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap <leader>w :w!<cr>
nmap <leader>f :find<cr>
" 映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
map <F12> gg=G
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y
"去空行
nnoremap <F2> :g/^\s*$/d<CR>
"比较文件
nnoremap <C-F2> :vert diffsplit
"新建标签
map <M-F2> :tabnew<CR>
"列出当前目录文件
map <F3> :tabnew .<CR>
"打开树状文件目录
map <C-F3> \be
"C,C++ 按F5编译运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!g++ % -o %<"
exec "! ./%<"
elseif &filetype == 'cpp'
exec "!g++ % -o %<"
exec "! ./%<"
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
elseif &filetype == 'sh'
:!./%
endif
endfunc
"C,C++的调试
map <F8> :call Rungdb()<CR>
func! Rungdb()
exec "w"
exec "!g++ % -g -o %<"
exec "!gdb ./%<"
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设置当文件被改动时自动载入
set autoread
" quickfix模式
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
"代码补全
set completeopt=preview,menu
"允许插件
filetype plugin on
"共享剪贴板
set clipboard+=unnamed
"从不备份
set nobackup
"make 运行
:set makeprg=g++\ -Wall\ \ %
"自动保存
set autowrite
set ruler " 打开状态栏标尺
set cursorline " 突出显示当前行
set magic " 设置魔术
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
set foldcolumn=
set foldmethod=indent
set foldlevel=
set foldenable " 开始折叠
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
" 语法高亮
set syntax=on
" 去掉输入错误的提示声音
set noeb
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 自动缩进
set autoindent
set cindent
" Tab键的宽度
set tabstop=
" 统一缩进为4
set softtabstop=
set shiftwidth=
" 不要用空格代替制表符
set noexpandtab
" 在行和段开始处使用制表符
set smarttab
" 显示行号
set number
" 历史记录数
set history=
"禁止生成临时文件
set nobackup
set noswapfile
"搜索忽略大小写
set ignorecase
"搜索逐字符高亮
set hlsearch
set incsearch
"行内替换
set gdefault
"编码设置
set enc=utf-
set fencs=utf-,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置
set langmenu=zh_CN.UTF-
set helplang=cn
" 我的状态行显示的内容(包括文件类型和解码)
"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 总是显示状态行
set laststatus=
" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
" 保存全局变量
set viminfo+=!
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 字符间插入的像素行数目
set linespace=
" 增强模式中的命令行自动完成操作
set wildmenu
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=
" 允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=
" 为C程序提供自动缩进
set smartindent
" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
if getline('.')[col('.') - ] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
filetype plugin indent on
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu
如果出现can not find 这些错误
可以设置vim目录
let $VIMRUNTIME="/usr/share/vim/vim70"
set runtimepath=/usr/share/vim/vim70
非root配置linux下vim的更多相关文章
- 配置Linux下vim自动缩进等功能
从终端打开配置文件: vim ~/.vimrc 添加如下代码: set tabstop=4 set softtabstop=4 set shiftwidth=4 set autoindent set ...
- 非root用户linux下安装FFTW
一.环境准备 确保g++可用本次编译是基于 GNU C++ 环境的,因此务必确定g++编译器可用,使用如下命令验证:命令:g++ --version出现类似如下输出则表明编译器可用: 二.下载FFTW ...
- Windows10下配置Linux下C语言开发环境
今天为大家介绍如在Windows10下配置Linux下C语言开发环境,首先安装linux子系统:启用开发者模式 1.打开设置 2.点击更新和安全3.点击开发者选项 4.启用开发人员模式 5.更改系统功 ...
- 20145234黄斐《信息安全系统设计基础》第八周(Linux下vim相关命令)
Linux下vim相关命令 在编辑程序时经常使用vim,所以记住一些常用的指令还是很有必要的 文件命令 vim file 打开单个文件vim file vim file1 file2 file3 .. ...
- Linux下Vim常用操作
linux下Vim的常用操作 linux 首先\(ctrl+Alt+t\)打开小框框 \(./\):相当于手机上的\(home\)键 \(ls\):当前文件夹的东东 \(mkdir\) ...
- Linux下vim文件未正常退出,修复文件
Linux下vim文件未正常退出,会产生一个 .文件名.swp的文件 ls -al ,rm 删掉.swp文件 之后就可以正常使用文件了
- linux 下vim文件乱码 cat文件正常处理方法
linux 下vim文件乱码 cat文件正常处理方法 服务器支持中文字符集,cat和其他查看文件命令现在正常,vim还是出现了中文乱码问题, 1.查看文件编码格式 vim 文件 :set fileen ...
- linux下vim如何配置markdown插件
在vim中设置markdown语法高亮是一个不错的选择,但是在google中搜索到的很多都是比较老的设置方式,甚至vim插件下载页面都是一个旧的版本.这里总结下我的修改过程,以帮助像我一样纠结的人. ...
- Linux下vim的安装及配置
目录 一.vim的下载 二.vim的基本知识 三.vim的基本配置 四.vim与外部文件的复制粘贴 一.vim的下载 Ubuntu系统,输入命令: sudo apt install vim Cento ...
随机推荐
- 部署tinyproxy透明代理服务
线上需要一个https的透明代理,开始打算用nginx,调试了一段时间发现配置较复杂且没有成功.后来用的tinyproxy做的透明代理.安装配置过程就是下载.解压.编译.安装.配置.启动一波流: 安装 ...
- (六)js常见四大排序
今天突然想回顾一下四大排序,虽然说在实战中没有用到,但是想回顾一下四大排序的思想 var arr = [23, 34, 11, 22, 19, 18]; 1.冒泡排序: 冒泡排序的思路分析: ...
- 深入了解zookeeper(三)
一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示. 那么我们继续分析一下 ...
- C++多态技术
转自: http://blog.sciencenet.cn/blog-58025-691458.html 摘要 本文介绍了C++中的各种多态性,重点阐述了面向对象的动态多态和基于模板的静态多态, ...
- 【操作系统】总结五(I/O管理)
输入输出管理本章主要内容: I/O管理概述(I/O控制方式.I/O软件层次结构)和I/O核心子系统(I/O调度概念.局速缓存与缓冲区.设备分配与回收.假脱机技术(SPOOLing)). 5.1 I/O ...
- matlab_移动文件和复制文件
clear clc cd('C:\Users\xx\Desktop\learning'); % 设置当前目录 % 此时learning文件夹中有:文件夹x, 文件夹y, 文件a.png, 文件b.pn ...
- 网络服务器带宽Mbps、Mb/s、MB/s的区别
例如所谓 10M 带宽,其实是指 10Mbps (兆比特) 计算带宽理论最快下载速度:10÷8=1.25MB/s 那么100M的带宽最快下载速度是12.5MB/s. 但这只是理论上的速度,在这个数值附 ...
- 错过的sql语句
总结: 内链接:适合和自己的条件对比,但并没有给出具体条件,要从数据库表里面找,注意有些条件两个表都需要写(嵌套查询貌似也可以 左连接:适合一个表要全部列出来的情况(使用count的时候,注意coun ...
- java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream异常解决方法
使用Tomcat部署Servlet程序时,单步调试跟踪到: List<FileItem> itemList = sfu.parseRequest(request); 总是会报错:Java. ...
- bzoj 2946 [Poi2000]公共串——后缀自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2946 对每个串都建一个后缀自动机,然后 dfs 其中一个自动机,记录同步的话在别的自动机上走 ...