vim中翻页的命令 vim使用技巧之翻页 vim学习资料vi快捷键必知必会Vim的小技巧vim的查找与替换

整页翻页 ctrl-f ctrl-b
f就是forword b就是backward

翻半页
ctrl-d ctlr-u
d=down u=up

滚一行
ctrl-e ctrl-y

zz 让光标所杂的行居屏幕中央
zt 让光标所杂的行居屏幕最上一行 t=top
zb 让光标所杂的行居屏幕最下一行 b=bottom

莫愁前路无知己,天下无人不识君。

 

h  左,或 Backspace 或方向键
j  下,或 Enter 或 +(要 Shift 键),或方向键
k  上,或 方向键或 -(不必 Shift 键)
l  右,或 Space 或方向键
使用 hjkl 键的移动是为了使手不必离开打字区(键盘中央的部位),以加快打字的速度,如果各位不习惯,那就使用方向键吧!
Backspace 及 Space 的移动方式是到了行首或行尾时会折行,但方向键或 hl 键的移动则在行首或行尾时您继续按也不会折行。转折换行的功能是 vim 的扩充功能,elvis 无此功能。
jk 及使用方向键的上下移动游标会尽量保持在同一栏位。使用 Enter,+,- 的上下移动,游标会移至上(下)一行的第一个非空白字元处。
好像有点複杂,各位就暂时使用方向键来移动就简单明白了!等您爱上了 vim 后再来讲究吧。
 Ctrl-f    即 PageDown 翻页。
Crtl-b    即 PageUp 翻页。

 


进阶的游标移动
0  是数目字 0 而不是英文字母 o。或是 Hmoe 键,移至行首,
   (含空白字元)。
^  移至第一个非空白字元,注意,要 Shift 键。
$  移至行尾,或 End 键。要 Shift 键。
以上两个按键是源自规则表示式(regular expression),在 regexp 中 ^ 是匹配行首,$ 是匹配行尾。
 G  移至档尾(最后一行的第一个非空白字元处)
gg 移至档首(第一行之第一个非空白字元处)
gg 是 vim 的扩充功能,在 elvis 或原始 vi 中可用 1G 来移至档首(是数字 1 不是英文字 l)。
G 之原意是 goto,指移至指定数目行之行首,如不指定数目,则预设是最后一行。
 w  移至次一个字(word)字首。当然是指英文单字。
W  同上,但会忽略一些标点符号。
e  移至前一个字字尾。
E  同上,但会忽略一些标点符号。
b  移至前一个字字首。
B  同上,但会忽略一些标点符号。
H  移至萤幕顶第一个非空白字元。
M  移至萤幕中间第一个非空白字元。
L  移至萤幕底第一个非空白字元。
这和 PageDown,PageUp 不一样,内文内容并未动,只是游标在动而已。
 n| 移至第 n 个字元(栏)处。注意,要用 Shift 键。n 是从头起
   算的。
:n 移至第 n 行行首。或 nG。
 

特殊的移动
)  移至下一个句子(sentence)首。
(  移至上一个句子(sentence)首。
}  移至下一个段落(paragraph)首。
{  移至上一个段落(paragraph)首。
sentence 是以 . ! ? 为区格。
paragraph 是以空白行为区格。
 %  这是匹配 {},[],() 用的,例如您的游标现在在 { 上
   只要按 %,就会跑到相匹配的 } 上。写程式时满好用的。
 

另还有一些 vim 的特殊按键,但这得留待最后才来讲述,否则各位恐怕会头昏眼花了。

         

            成长

       /      |     \

    学习   总结   分享

0.基础
1.配置
2.操作
3.插件
3.实际应用
4.小TIP

0.基础
http://www.vim.org/images/vim_header.gif
先到官方网站 (http://www.vim.org)下载一份gVim
gVim是跨平台的,我在windows系统下面就下载了一份for win32 (ftp://ftp.vim.org/pub/vim/pc/gvim71.exe)


1.配置
gVim的所有配置都是写在一个名为_vimrc的没有扩展名文件中的,使用文本编辑器就可以打开修改.
安装后gVim后会在安装目录下自动生成这个文件.
以后再安装移动的话保留这个配置文件会方便很多.

贴上我的配置

set linebreak
set textwidth=80
set nocompatible
set history=400
set ruler
set number
set hlsearch
set noincsearch
set expandtab
set noerrorbells
set novisualbell
set t_vb= "close visual bell
set foldmethod=marker
set tabstop=4
set shiftwidth=4
set nobackup
set nowritebackup
set noswapfile
set smarttab
set smartindent
set autoindent
set cindent
set wrap
set autoread
set cmdheight=1
set showtabline=2
"set clipboard+=unnamed
set tabpagemax=20
set laststatus=2
set statusline=\ [File]\ %F%m%r%h\ %w\ \ [PWD]\ %r%{CurrectDir()}%h\ \ %=[Line]\ %l,%c\ %=\ %P



function! CurrectDir()
let curdir = substitute(getcwd(), "", "", "g")
return curdir
endfunction

if has("multi_byte")
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk
if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
set ambiwidth=double
endif
if has("win32")
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction


有些内容也是我从网上搜索出来的.
例如打开utf-8编码的文件会显示乱码.
在_vimrc中添加

if has("multi_byte")
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk

if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
set ambiwidth=double
endif

if has("win32")
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif

这样就支持utf-8编码的文件了.


2.操作

转一篇水木的精华文章.写的很好.

vi 的屏幕区域分为两个部分:最下面一行是命令行,一般用于提示信息或命令行输入;除此之外为正文显示区域。跟 notepad 不同的是,vi 中存在两种模式:普通(Normal)模式和插入(Insert)模式。

进入 vi 后默认即为普通模式。新手一般初次进入 vi 后就想输入一串字符,结果发现 vi 一连串莫名其妙的反应。其实,在 vi 的普通模式下,任何按键包括普通字符都表示某个命令,并不表示在当前光标处插入字符。常用的命令有:(注意区分大小写)
: 进入命令行
i 或 a 进入插入模式。区别是:i 进入插入模式后,光标在当前字符前面; a 进入插入模式后,光标在当前字符后面
h j k l 分别是光标左移、下移、上移、右移(一般来说你不会用到它们来移动光标,按方向键就可以了)
x 删除一个字符
dd 删除一行
J 删除本行的回车符,把下一行并入本行末尾
r字符 替换光标所在字符为新字符
^ $ 分别是光标移到行首和行末
数字G 移动光标到第若干行,如果直接按 G 则移动到最后一行

在普通模式中,命令以按键形式输入。而在命令行中,命令以字符串形式输入。下面是常用的命令行:
:q 退出! (更确切的说应该是关闭当前文件)
:w 文件名 存盘。如果还是保存为当前文件,不必写文件名
:wq 存盘退出
:new 文件名 打开或新建文件(同时关闭当前文件)。如果不指定文件名或者文件名不存在则是新建文件
:help 帮助! 看完后用 :q 关掉窗口。可以在 help 后面加某个帮助主题的名称,如 :help dd 或 :help help

还有一点是,如果某个命令得到警告(拒绝执行),则要在命令的命令词后加叹号表示强制执行。比如你修改过文件,但又想放弃存盘并退出,如果输入 :q,vi 会告诉你文件已修改,这时,你只能输入 :q! 退出。又如用 :w! a.txt 表示把当前文件存为 a.txt 而不管 a.txt 是否已经存在。

插入模式就不用多说了,添加你的新内容吧。不过,你也许会发现 BackSpace 键和 Delete 键的运用很受限制,也不能像 notepad 那样选择、复制和粘贴。这些都是由于这是 vi 的标准,后面我们将看到 VIM 扩展的功能可以解决这些问题。记住按 ESC 退出插入模式,回到普通模式。
2. 复制和粘贴

为了便于选取文本,VIM 引入了可视(Visual)模式。要选取一段文本,首先将光标移到段首,在普通模式下按 v 进入可视模式,然后把光标移到段末。需要注意,光标所在字符是包含在选区中的。这时可以对所选的文本进行一些操作,常用的(可视模式)命令有:
x 或 d 剪切(即删除,同时所选的文本进入剪贴板)
y 复制
r字符 所有字符替换为新字符
u U ~ 分别是所有字母变小写、变大写、反转大小写
> < 分别是缩进和反缩进

当输入了命令以后,VIM 将回到普通模式,这时可以按 p 或 P 进行粘贴。普通模式下有关复制和粘贴的命令:
v 进入可视模式
p 或 P 在当前位置粘贴剪贴板的内容,p 粘在光标所在字符后面,P 粘在前面

不得不承认,虽然引入了可视模式,复制和粘贴在 VIM 中仍然是比较麻烦的操作,这也许是 VIM 唯一的缺点。:-) 此外,VIM 还引入了选择 (Select)模式,跟可视模式类似。结合一些键的定义和选项设置,可以实现跟 notepad 相同的复制和粘贴的使用习惯。限于篇幅和水平,在此不提。



3.插件
这一块我还不是很熟悉安装..转一篇不错的文章

插件的安装


翻译得不好, 请大家多多包涵!

VIM 插件一般安装在 5 个地方, 存放插件的路径都列在“runtimepath”选项中,我们可以使用 set 命令查看它:

:set runtimepath?

显示结果如下:

runtimepath=~/.vim,/usr/local/share/vim/vimfiles,/usr/local/share/vim/vim63,/u
sr/local/share/vim/vimfiles/after,~/.vim/after

Unix 下的 $HOME/.vim 或 Windows 下的 %HOME%/vimfiles:用户自定义脚本及插件。 该目录下的脚本会在系统脚本加载前执行, 用于扩展与替代系统脚本原有功能。

$VIM/vimfiles: 功能同上, 不过是对所有用户均有效的。

$VIMRUNTIME: 随 VIM 一同发行的插件与脚本。 不要在这里存放你自己下载或安装的文件,升级 VIM 的时候, 这里的文件很可能被直接覆盖掉, 不会给出任何提示信息。

Unix 下的 $HOME/.vim/after 或 Windows 下的 %HOME%/vimfiles/after:用于对已有设置进行一些小的修正和覆写。

$VIM/vimfiles/after: 对所有用户均有效的一些全局设置修正脚本。

以上路径都是使用“VIM 语言”给出的, 一般情况下, $VIMRUNTIME 都不会被定义为系统环境变量, $VIM 在少数情况下会在 VIM 之外被定义。 如果你想知道这些路径都是什么, 可以在 VIM 中使用“:echo $VIMRUNTIME”或“:echo $VIM”。

以上提到的 5 个目录的子目录结构都是相同的。 如果你希望在其它目录里安装插件的话,建议使用 $VIMRUNTIME 的目录结构作为模版, 将必要的目录结构创建完整,像这样:

+ <Directory>
+ colors
+ compiler
+ doc
+ etc
+ ftdetect
+ ftplugin
+ indent
+ keymap
+ plugin
+ syntax



VIM常用插件的推荐
http://learn.tsinghua.edu.cn:8080/2005212716/html/vimplugins.html


asing使用插件
CSS color preview (http://www.vim.org/scripts/script.php?script_id=2150)

文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充!

进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename….filename :打开多个文件,依次进行编辑

移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行

寄存器操作
“?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
“?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

1. 全局替换
  (1) v + G + $ 选定全部,然后输入 :s/原始字符串/目标字符串/
  (2) :%s/原始字符串/目标字符串/
  2. 清除页面中所有行尾的空白符:
  :%s/\s\+$//
  3. 清除所有空白
  :%s/\(\s*\n\)\+/\r/
  4. 去掉所有的//注释
  :%s!\s*//.*!!
  5. 去掉所有的/* */注释
  :%s!\s*/\*\_.\{-}\*/\s*! !
  6. 做某些内部数据重复替换
  有些时候我们需要组织一些批量的数据进行命令行的执行,比如我们需要利用前面的数据生成后面的数据,例如这样的数据:
  /var/database/aaa.txt
  /var/database/bbb.txt
  /var/database/ccc.txt
  我想变成一个个的指令,比如变成一个个复制命令,复制到但前目录,那么可以执行:
  :%s/\(.*base\/\)\(.*\.txt\)/cp \1\2 \.\/\2/
  变成了:
  cp /var/database/aaa.txt ./aaa.txt
  cp /var/database/bbb.txt ./bbb.txt
  cp /var/database/ccc.txt ./ccc.txt
  这里关键是子模式的使用: () 中间的,\1 代表第一个找到的子模式,\2代表第二个,以此类推,vim里面的()必须转义,跟其他语言不一样
  7. 增加注释(一个操作应用在多行)
  比如需要增加#或者是//这种注释:
  Ctrl + v 定位到开始行,然后选定需要的行,然后执行 I 命令,然后输入 # 或 //,然后按 Esc键两次,即可把注释操作应用到所有选定的行,记住选定不能使用v指令,而应该使用Ctrl + v (清除注释请参考上面的方法)(v是按行选定,Ctrl + v 是按照列选定)
  8. 对齐行
  v 选定需要整齐的行,输入 = 进行归整
  9. 打开多窗口
  在vim中使用 :sp 文件名 打开行窗口(横),使用 :vsp 文件名 打开列窗口(竖),使用 :q 关闭当前窗口,使用 :qa 关闭所有窗口,使用 Ctrl + w 在各个窗口中进行切换。
  最大化窗口:Ctrl + w 激活某个窗口,然后 Shitf + - 进行最大化
  改变窗口到指定行高度:Ctrl + w 激活窗口,10(需要变成的行大小数字),Shift + -,执行改变
  增加若干行高度:Ctrl + w 激活窗口,10(需要增加的行大小数字),Shift + +,执行改变
  10. 字符串/变量提示
  在输入内容状态,按 Ctrl + P 则显示所有本页中定义的字符串,如果输入字符串部分内容,然后按 Ctrl + p 则把所有你输入字符串开头的内容显示出来。在输入状态下按 Ctrl + x 能过查看所有有效的其他方式(王朝网络 wangchao.net.cn)

VIM中常用的替换模式总结。

1,简单替换表达式

替换命令可以在全文中用一个单词替换另一个单词:

:%s/four/4/g

 

“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可

   如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:

        :%s/\<four/4/g

显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题:

        :%s/\<four\>/4/g

如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你:

        :%s/\<four\>/4/gc

2,删除多余的空格

要删除这些每行后面多余的空格,可以执行如下命令:

        :%s/\s\+$//

命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是

“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。

3,匹配重复性模式

星号项 “*” 规定在它前面的项可以重复任意次。因此:

        /a*

匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “\(”,后面加 “\)”。因此这个命令:

        /\(ab\)*

匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。

要避免匹配空字串,使用 “\+”。这表示前面一项可以被匹配一次或多次。

        /ab\+

匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。

要匹配一个可选项,用 “\=”。 例如:

        /folders\=

匹配 “folder” 和 “folders”。

4,指定重复次数

要匹配某一项的特定次数重复,使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:

        /ab\{3,5}

匹配 “abbb”,”abbbb” 以及 “abbbbb”。

   当 “n” 省略时,被默认为零。当 “m” 省略时,被默认为无限大。当 “,m” 省略时,就表示重复正好 “n” 次。例如:

        模式           匹配次数

        \{,4}            0,1,2,3 或 4

        \{3,}            3,4,5,等等

        \{0,1}           0 或 1,同 \=

        \{0,}            0 或 更多,同 *

        \{1,}            1 或 更多,同 \+

        \{3}             3

5,多选一匹配

在一个查找模式中,”或” 运算符是 “\|”。例如:

        /foo\|bar

这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:

        /one\|two\|three

匹配 “one”,”two” 或 “three”。

   如要匹配其多次重复,那么整个抉择结构须置于 “\(” 和 “\)” 之间:

        /\(foo\|bar\)\+

这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。

   再举个例子:

        /end\(if\|while\|for\)

这个命令匹配 “endif”,”endwhile” 和 “endfor”。

" General

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Get out of VI's compatible mode..

"不要使用vi的键盘模式,而是vim自己的

set nocompatible

"禁止生成临时文件

set nobackup

set noswapfile

" 带有如下符号的单词不要被换行分割

set iskeyword+=_,$,@,%,#,-

"编码设置

set enc=utf-8

set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

" 通过使用: commands命令,告诉我们文件的哪一行被改变过

set report=0

" 启动的时候不显示那个援助索马里儿童的提示

set shortmess=atI

" 在被分割的窗口间显示空白,便于阅读

set fillchars=vert:\ ,stl:\ ,stlnc:\

"语言设置

set langmenu=zh_CN.UTF-8

set helplang=cn

"Sets how many lines of history VIM har to remember

set history=400

 

set showcmd

"Enable filetype plugin

filetype plugin on

filetype indent on

"Set to auto read when a file is changed from the outside

set autoread

"Have the mouse enabled all the time:

set mouse=a

"Set mapleader

let mapleader = ","

let g:mapleader = ","

"Fast saving

nmap <leader>w :w!<cr>

nmap <leader>f :find<cr>

"Fast reloading of the .vimrc

map <leader>s :source ~/.vimrc<cr>

"Fast editing of .vimrc

map <leader>e :e! ~/.vimrc<cr>

"When .vimrc is edited, reload it

autocmd! bufwritepost vimrc source ~/.vimrc

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Colors and Fonts

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Enable syntax hl

syntax enable

"colorscheme elflord 

colorscheme 3dglasses

set background=light

"Some nice mapping to switch syntax (useful if one mixes different languages in one file)

"map <leader>1 :set syntax=cheetah<cr>

"map <leader>2 :set syntax=xhtml<cr>

"map <leader>3 :set syntax=python<cr>

"map <leader>4 :set ft=javascript<cr>

"map <leader>$ :syntax sync fromstart<cr>

autocmd BufEnter * :syntax sync fromstart

"Highlight current

"if has("gui_running")

" set cursorline

" hi cursorline guibg=#333333

" hi CursorColumn guibg=#333333

"endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" VIM userinterface

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

set so=7

"Turn on WiLd menu

set wildmenu

"Always show current position

set ruler

"The commandbar is 2 high

set cmdheight=1

"Show line number

set nu

"Do not redraw, when running macros.. lazyredraw

set lz

"Change buffer - without saving

set hid

"Set backspace

set backspace=eol,start,indent

"Bbackspace and cursor keys wrap to

set whichwrap+=<,>,h,l

"Ignore case when searching

set ignorecase

set hlsearch

set incsearch

"Set magic on

set magic

"No sound on errors.

set noerrorbells

set novisualbell

set t_vb=

"show matching bracets

set showmatch

"How many tenths of a second to blink

set mat=2

"Highlight search things

set hlsearch

""""""""""""""""""""""""""""""

" Statusline

""""""""""""""""""""""""""""""

  "Always hide the statusline

  set laststatus=2

  function! CurDir()

     let curdir = substitute(getcwd(), '/home/mac/', "~/", "g")

     return curdir

  endfunction

  "Format the statusline

  "set statusline=\ %F%m%r%h\ %w\ \ 当前目录:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c

  "状态行显示的内容(包括文件类型和解码)

  set statusline=%F%m%r%h%w\ 当前目录:\ [%r%{CurDir()}%h]\ [TYPE=%Y]\ [FORMAT=%{&ff}]\ [POS=%l,%v][%p%%]\ 

  "%{strftime(\"%d/%m/%y\ -\ %H:%M\")}

  "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Moving around and tabs

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Map space to / and c-space to ?

map <space> :

"map <c-space> ?

"Smart way to move btw. windows

map <C-j> <C-W>j

map <C-k> <C-W>k

map <C-h> <C-W>h

map <C-l> <C-W>l

"Actually, the tab does not switch buffers, but my arrows

"Bclose function ca be found in "Buffer related" section

"map <leader>bd :Bclose<cr>

"map <down> <leader>bd

"Use the arrows to something usefull<C-e>

map <right> :bn<cr>

map <left> :bp<cr>

"Tab configuration

map <C-t> :tabnew %<cr>

map <C-e> :tabedit

map <C-c> :tabclose<cr>

map <C-m> :tabmove

map <C-n> :tabnext<CR>

map <C-p> :tabprevious<CR>

try

  set switchbuf=usetab

  set stal=2

catch

endtry

"Moving fast to front, back and 2 sides ;)

imap <m-$> <esc>$a

imap <m-0> <esc>0i

imap <D-$> <esc>$a

imap <D-0> <esc>0i

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" General Autocommands

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Switch to current dir

map <leader>cd :cd %:p:h<cr>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" General Abbrevs

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"My information

iab xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>

iab xname kehao

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Editing mappings etc.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Remap VIM 0

map 0 ^

map - $

"Move a line of text using control

nmap <M-j> mz:m+<cr>`z

nmap <M-k> mz:m-2<cr>`z

vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z

vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z

"if MySys() == "mac"

"  nmap <D-j> <M-j>

"  nmap <D-k> <M-k>

"  vmap <D-j> <M-j>

"  vmap <D-k> <M-k>

"endif

"func! DeleteTrailingWS()

"exe "normal mz"

" %s/\s\+$//ge

" exe "normal `z"

"endfunc

"autocmd BufWrite *.py :call DeleteTrailingWS()

"set completeopt=menu

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Command-line config

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

func! Cwd()

  let cwd = getcwd()

  return "e " . cwd 

endfunc

func! DeleteTillSlash()

  let g:cmd = getcmdline()

"  if MySys() == "linux" || MySys() == "mac"

    let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*", "\\1", "")

"  else

    let g:cmd_edited = substitute(g:cmd, "\\(.*\[\\\\]\\).*", "\\1", "")

"  endif

"  if g:cmd == g:cmd_edited

"    if MySys() == "linux" || MySys() == "mac"

      let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*/", "\\1", "")

"    else

"      let g:cmd_edited = substitute(g:cmd, "\\(.*\[\\\\\]\\).*\[\\\\\]", "\\1", "")

"   endif

  endif

  return g:cmd_edited

endfunc

func! CurrentFileDir(cmd)

  return a:cmd . " " . expand("%:p:h") . "/"

endfunc

"Smart mappings on the command line

cno $h e ~/

cno $d e ~/Desktop/

cno $j e ./

cno $q <C-\>eDeleteTillSlash()<cr>

cno $c e <C-\>eCurrentFileDir("e")<cr>

cno $tc <C-\>eCurrentFileDir("tabnew")<cr>

cno $th tabnew ~/

cno $td tabnew ~/Desktop/

"Bash like

cnoremap <C-A>    <Home>

cnoremap <C-E>    <End>

cnoremap <C-K>    <C-U>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Buffer realted

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Fast open a buffer by search for a name

map <c-q> :sb

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Text options

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

set expandtab

set shiftwidth=2

map <leader>t2 :set shiftwidth=2<cr>

map <leader>t4 :set shiftwidth=4<cr>

au FileType html,python,vim,javascript setl shiftwidth=2

au FileType html,python,vim,javascript setl tabstop=2

au FileType java setl shiftwidth=4

au FileType java setl tabstop=4

  

set smarttab

set lbr

set tw=500

""""""""""""""""""""""""""""""

" Indent

""""""""""""""""""""""""""""""

"Auto indent

set ai

"Smart indet

set si

"C-style indeting

set cindent

"Wrap lines

set wrap

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Spell checking

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"map <leader>sn ]s

"map <leader>sp [s

"map <leader>sa zg

"map <leader>s? z=

" Erlang "

autocmd FileType erlang set tabstop=4

autocmd FileType erlang set shiftwidth=4

autocmd FileType erlang set expandtab

autocmd FileType erlang set softtabstop=4

let g:erlangCompleteFile="~/.vim/bundle/vimerl/autoload/erlang_complete.erl"

let g:erlangCheckFile="~/.vim/bundle/vimerl/compiler/erlang_check.erl"

set foldenable

let g:erlangFold = 1 " Don't fold block of code by default

let g:erlangHighlightBif = 1

let g:erlangHighLightOperators=1

map <leader>c "+y

map <leader>v "+p

map <leader>l :vertical res 1000<cr> res 100<cr>

map <C-f> :%s/\<w/rw/gc

 

if has("autocmd")

  au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"

  au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"

  au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"

endif

 

 

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值