Vim 设置

基本的定义

环境变量

$VIM

/usr/share/vim

 

$VIMHOME

 

$VIMRUNTIME

n general, $VIMRUNTIME cannot be set within vimrc.

This tip is for those who want to avoid setting $VIMRUNTIME as an enviromental variable (either rc file on Unix or enviroment on Windows).

I found the following steps worked on my PC and Unix:

  • Find out your $VIM (on Windows, it is the directory where gvim.exe lives).
  • Create a directory called doc under $VIM (now, we have $VIM/doc).

 

$VIMRUNTIME='C:/usr/share/vim/vim63'

 

$VIMRUNTIME='/usr/share/vim/vim73'


$VIMINIT


$VIMHOME
  

 


set fileformat=unix " 文件换行符,dos采用CR加LF, unix采用LF (这也条语句不起作用

 

 

http://www.cnblogs.com/fengfengqingqingyangyang/archive/2012/12/06/2805483.html

 

FILE

新建,并且另存

快速打开最近打开文件列表

以TAB,WINDOW多窗口,多TAB的方式打开文件

 

 

首先是针对文件操作的

1.存取

:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)

: sav 文字名 如 : sav C:/ont.txt 对文件来进行另存处理

2.新建以及打开文件

:new 文件名 新建一个文件。 :new 文件名

:edit 文件名 如 :edit http://www.cnblogs.com/index.php 会在当前窗口打开一个文件。

: sp 文件名 如 : 已经打开了index.php, 现在再来打开config.inc.php文件. 示例: : sp config.inc.php

:vsplit 文件名 (for a vertical division).

11

对窗口来进行切换:

ctrl + w 可进行切换。

ctrl+wq 可以对窗口进行切换关闭。

 

edit进行TAB切换

 

 

 

快捷键的定义

 

vim下的快捷键操作:

^ :如同时按下 ctrl 与v 键产生

P : 代表任意的字母,一般推荐使用大写

 

shell下的单选注释:

ctrl+p : SHELL环境下的单选注释

:map ^P I#<ESC>

 

ctrl+B: SHELL环境下的取消注释

map ^B 0x 【移到到行首,进而删除】

 

 

 

缩写的定义

 

 

系统层面:

调用SHELL

 

 

EDIT

 

 

显示

终端显示的字体以及color, background color

 

 

 

状态栏

定义状态栏(显示文件路径,格式类型,文本长度等)

:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v]\ [%p%%]\ [LEN=%L]

 

状态栏的显示位置

make sure that your status line is always shown as the second-last line in the editor window:

:set laststatus=2

 

取消状态显示

You can always remove it for the rest of the editing session by executing the following command from within Vim

:set laststatus=0

 

 

 

复制,删除,粘贴

 

基于块的复制,删除,粘贴操作


why we use the block?
对于 vim几乎提到的都是以行为单位癿操作。那么如果我想要搞定癿是一个区块范围呢(我特别喜欢像使用windows下的文本编辑器一样去使用块的选择)
 
当我们按下 v 戒者 V 戒者 [Ctrl]+v 时, 这个时候光标移劢过癿地方就会开始反白。
 
 

区块选择的按键意义 【不使用鼠标,来选择块】


v 字符选择,会将光标经过癿地方反白选择!
V(大写) 行选择,会将光标经过癿行反白选择!
[Ctrl]+v 区块选择,可以用长方形癿方式选择资料
y 将反白癿地方复制起来 d 将反白癿地方删除掉
 
再来使用 HJKL等方向来进行选择
 

image

 

 
 
 

以行或者是以单词为单位的删除操作


x, X 在一行字当中,x 为向后删除一个字符 (相当亍 [del] 按键), X 为向前删除一个字符(相当亍 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。丼例来说,我要连续删除 10 个字符, 『10x』。
 
dd 删除游标所在的那一整列(常用)
ndd n 为数字。删除光标所在癿向下 n 列,例如 20dd 则是删除 20 列 (常用)
d1G 删除光标所在到第一行癿所有数据
dG 删除光标所在到最后一行癿所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字癿 0 ,删除游标所在处,到该行癿最前面一个字符
 
 
 
 
与复制相关

yy 复制游标所在癿那一行(常用)
y1G 复制光标所在列到第一列癿所有数据
yG 复制光标所在列到最后一列癿所有数据
y0 复制光标所在癿那个字符到该行行首癿所有数据
y$ 复制光标所在癿那个字符到该行行尾癿所有数据
 
 
 

复原以及重做操作


u 复原前一个劢作。(常用)
[Ctrl]+r 重做上一个劢作。(常用)
.也可以代替重做
 
 
 
 

选取某一部分的行数据来进行复制,删除等处理


:n1,n2d 将n1,n2之间的所有文字来进行删除

:n1,n2y 将n1,n2之间的所有文字来进行复制

 

 

替换模式


image

关键是 “R “ 取代模式,它可以快速的替换以及插入数据(类似于 word中的 即点即输)的功能。

 

 

 

全选

从clipboard中粘贴

打开cut,copy的历史记录板

快速缩进:

   定义缩进的TAB,SPACE

 

快速注释/取消注释

自动补全

 

 

 

 

VIEW

查看文档中的换行,回车符等

 

编辑器以全屏视图打开

 

根据function,snip来进行fold.

 

辅助信息

文档的行数 当前光标的位置  文件的绝对存储位置,编码方式

 

编码

查看当前文件的编码方式

解决查看文件乱码的问题

以正确的编码书写,并且以正确的编码来进行保存

将当前文档的编码方式,进行无差别的转换.

查看UTF-8编码是否有BOM

 

 

搜索与replace

 

 

在命令模式下对于转义字符的处理

特别是对于替换来说,如果我要替换 “/www”换成”ww1”应该如何来处理

使用”\/”来对 反斜线来转义

添加一般程序的单行注释方法: “//”形式的注释
:n1,n2s/^/\/\//g 【这里^符号所代表是 键盘中的6上的那个键】

多行的”#”号注释

:n1,n2s/^/#/g 【在行首添加#号】

取消”#”号的注释

:n1,n2s/^#//g 【在指定的范围下,将行首(所以一定要添加^号)替换成空】 则代表进行注释

 

 

查看当前文档

在多个文档中,查找某一个关键词

在指定目录下,以文件后缀名(如.css,.js) 来查找某一个关键词

 

正则表达式搜索应用

1.大小写匹配

2. 全词匹配

3.  统计查找所出现的次数

以下是自己总结的 VIM操作,肯定不全面。主要是自己常用的总结,这个主要是以编辑命令为主。
 
 
program coding
自动的识别程序文件,并根据自动所识别的程序文件,将注释,代码块,函数,方法以不同的色彩来标识
对function等进行自动的fold
 
定义常用的abbreviations
 
 
拼写
使用ballcons来对spell错误进行自动的检测
 
 
 

行号的设置以及取消


:set nu  //设置行号
:set nonu  //取消行号
 

自动缩排


:set autoindent
:set noautoindent
 
 

状态栏的说明值


:set ruler   还记得我们提到癿右下角癿一些状态栏说明吗? 这个 ruler 就是在显示戒丌显示该设定值啦!
image
 
 
 
 
 
显示编辑模式

:set showmode      这个则是,是否要显示 --INSERT—之类癿字眼在左下角癿状态栏。
 
 
 
 

查看自己进行了的设定值


:set           显示不系统默讣值丌同癿设定参数, 一般来说就是你有自行变劢过癿设定参数啦!
 
 
 
 

背景色的设置


:set bg=dark

:set bg=light

可用以显示丌同的颜色色调,预设是『 light 』。如果你常常现批注癿字体为深蓝色实在很容易看, 那么这里可以设定为 dark 喔!

 
 
 
 

自动为光标行来进行标色


要分成两步走,一个为定义着色;再进行对着光标移动添加着色
 
定义highlight
:highlight CursorLine guibg=lightblue ctermbg=lightgray
 
启动方案的说明
:set cursorline
 
效果:
image
 
 
 

编辑文件时,自动对文件来进行备份


:set backup                       是否自动存储备份文件,当进行编辑文件时,会自动的生成一个文件
 
 

对程序文件来进行语法高亮


//Just issue the command: 来启动语法高亮
:syntax enable 
 
:syntax on
 
//还有一种情况,就是vim来自动的识别文件类型,来针对性的高亮
If you still see no syntax highlights, Vim may not know what your file type is and thus
not understand which syntax is appropriate.
 
//识别 shell脚本的高亮
:set syntax=sh
 
//识别PHP的脚本高亮
:set syntax=php
 
 

vim也能使用outline以及代码折叠


1.进行折叠
countzF
Create a fold covering count lines, starting with the current line.
示例:
3zf executes the zF folding command over three lines, starting with the current one.
 
image
 
2.还原所折叠,一定要将光标定位在折叠处
First, open all the folds with the command  zO (that’s z
followed by the letter O, not z followed by a zero).
 
 
????关于如何对程序按照方法等进行折叠,没有完成---待总结
 
3.进行删除折叠区域。
直接在折叠区域,进行dd删除即可

让程序自动来进行缩进


//Auto indentation closely mimics vi’s autoindent.
:set autoindent
 
//以下是有C语言特点的缩进
:set smartindent
:set cindent
 
??对于如何来对其它语言来进行缩进,未完成
 
 
???如何来对非C语言的程序来进行语法检查,如PHP,JAVA等。未完成???
 
 

对程序代码来进行自动的提示


对于程序代码的自动提示功能,它一般有两种:一种为基于语言字典的。另一种则为本文件中的代码记忆功能。
 
??对于语言字典的使用,目前未完成,研究过一段时间,但是在windows环境下失败了,以后来进行总结吧????
 
文件的记忆功能:  ctrl + p  在插入模式下使用.

 

 

 

vim与文件乱码的解决

Vim 可以很好的编辑各种字符编码的文件,包括 UCS-2、UTF-8 等流行的 Unicode 编码方式:

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding,它们的意义如下:

    * encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等;
    * fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此);
    * fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面;
    * termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。

Vim 的多字符编码的工作方式:

   1. Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式;
   2. 读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到的,看起来是正确的 (注1) 字符编码方式;
   3. 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为 encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的 iconv.dll (注2),你需要保证这个文件存在于 $VIMRUNTIME 或者其他列在 PATH 环境变量中的目录里;
   4. 编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用 iconv.dll。
 
   由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为 utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;)。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代码页)。

注1: 事实上,Vim 的探测准确度并不高,尤其是在 encoding 没有设置为 utf-8 时。因此强烈建议将 encoding 设置为 utf-8,虽然如果你想 Vim 显示中文菜单和提示消息的话这样会带来另一个小问题。

注2: 在 GNU 的 FTP 上可以下载到 iconv 的 Win32 版(http://mirrors.kernel.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip)。

注3: 查看帮助 :h iconv-dynamic。

注4: 前方中提到的.vimrc在windows下为_vimrc,存在于vim安装目录下。

以下为在windows下gvim7.2地配置文件_vimrc,使用此配置可解决安装中文版vimdoc后出现的菜单、控制台信息等乱码现象。
set encoding=utf-8  
set fileencodings=utf-8,chinese,latin-1    
if has("win32")   
  set fileencoding=chinese    
else     
  set fileencoding=utf-8  
endif    
source $VIMRUNTIME/delmenu.vim    
source $VIMRUNTIME/menu.vim   
language messages zh_CN.utf-8 

 

 

vim比较文件

1. 使用vim的比较模式打开两个文件:
   vim -d file1 file2

   vimdiff file1 file2

2. 如果已经打开了文件file1,再打开另一个文件file2进行比较:
   :vert diffsplit file2
如果没有用vert命令,diffsplit则会分上下两个窗口。

3. 如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。
   分别在两个窗口里面输入命令:
   :diffthis

4. 如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新:
   :diffupdate

5. 定位到不同点:
   [c     跳到前一个不同点
   ]c     跳到后一个不同点

6. 在窗口间跳转:
   ctrl-w w    跳到下一个窗口
   ctrl-w h    跳到左侧窗口
   ctrl-w l    跳到右侧窗口
   ctrl-w j    跳到下方的窗口
   ctrl-w k    跳到上方的窗口

7. 合并文档:
   dp          将差异点的当前文档内容应用到另一文档(diff put)
   do          将差异点的另一文档的内容拷贝到当前文档(diff get)


8. 上下文的展开和查看
    比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置
    :set diffopt=context:3

复制几个字符

另起一行,来进行插入

o     Open a new line below and insert.

     O     Open a new line above and insert.  

全选

:%y a

 


可以用简单的折叠命令来临时展开被折叠的相同的文本行: 
    zo          (folding open, z这个字母看上去比较像折叠的纸)

 

 

 

 

 

 

summary usage of vim on movement

快捷插入


A
 
Append text to end of current line.
 
 
I
Insert text at beginning of line.
 
i
 
在当前插入
 
 
o (lowercase letter “o”)
 
Open blank line below cursor for text.
 
 
O (uppercase letter “o”)
 
Open blank line above cursor for text.

针对当前行的快速移动


针对当前行的移动 :

H

Left, one space 10h 在光标处,向左移10个space

j

Down, one line 10j 在光标处,向下移10个行

k

Up, one line 向上移10行。

l

Right, one space 向右行10个space

 

image

 

 

 

针对单词的移动


movement by w(小写):

The w command moves the cursor forward one word at a time。

symbols and punctuation as equivalent to words. (不区分大小写)

  

using the W command(大写):

You can also move by word, not counting symbols and punctuation.

  

use the b (小写) command:backward

To move backward by word.

  

  

using the B command(大写):backward

You can also move by word, not counting symbols and punctuation.

  

  

针对同一行的移动


这是数字『 0 』:移动到这一行的最前面字符处(常用)

移动到这一行的最后面字符处(常用)

  

 向右

 

n<space> 按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。

 

如: 20<space>

 

 

 

 

vim下的文件以及窗口操作总结

 

3.vim与多文件编辑操作

vim fstab fstab.back

多文件的编辑:

:n 编辑下一个文件

:N 编辑上一个文件

: files 列出当前所编辑的文件的详细信息

 

 

4.对窗口来进行放大以及缩小

:resize n      sets the horizontal size of the current window to n lines

 

6

 

 

常用操作:

1.对打开的文本来进行全选

快速全部选中:  ggVG

 

 

2. 在多个文件中搜索某一个特定的字符串

两种方式:

外置的grep搜索

内置的vimgrep进行搜索

:vimgrep /pattern/[j][g] file file2... fileN

The pattern needs to be enclosed in /, and after the last / you can add either of the two flags j and g.

 

Useful commands for the quickfix list (brackets around omittable part of the commands):

  • :cn[ext] and :cp[revious] jump to next and previous entry
  • :cnf[ile] and :cpf[ile] jump to next and previous file (if the quickfix list is not sorted by file

To show your quickfix list with the vimgrep result, simply use
the :clist command or navigate to next / previous match with
:cnext / :cprevious.

 

 

Personally I have the following maps :

      | �0�3      | SHIFT   | CTRL
------+--------+---------+---------
<F11> | :cprev | :cpfile | :colder
<F12> | :cnext | :cnfile | :cnewer

 

 

列出所有的搜索结果(所有的前提都是以:vim,:vimgrep来搜索出结果之后)

:copen Open the quickfix window

:clist

 

 

Command Action
:cnext Jump to next item
:cprev Jump to previous item
:cfirst Jump to first item
:clast Jump to last item
:cnfile Jump to first item in next file
:cpfile Jump to last item in previous file
:cc N Jump to nth item
:copen Open the quickfix window
:cclose Close the quickfix window

 

:5cnext

So instead of stepping through every item in the quickfix list one by one, we could skip through them five at a time by running this

 

快速的打开导航文件:

 

The quickfix window has special behavior of its own. If we position our cursor
on it and press the <CR> key,

 

 

对于多文件的替换

 

 

3. 在文件中,对于特定字符的搜索以及替换,如[,/等常用关键字

vim中的常见特殊字符:  $,^,.,\,>,\,<,*

 

两种方式:

1. 使用命令模式设置 

Allow special characters in searches magic

set nomagic                 set magic

2. 使用正则表达式的转义

$ –> \$

. –> \.  [替换时使用]

 

 

 

4. 在VIM中,使用正则表达式匹配搜索

 

完整的只替换某一个单词

/ \<and\> Finds the next occurrence of the word and

:1,$s/\<off\>/OFF/gc

 

 

简单的匹配:

[A-Za-z]  匹配任何一个字符

[adr]  匹配任何一个字符

/ \<word\> 匹配单个单词  

 

vim与正则表达式的引用

:s/\<short\>/"&"/  

Replaces the word short on the current line with "short" (enclosed  within quotation marks

the shortest of the short → the shortest of the "short"

猜你喜欢

转载自lxs647.iteye.com/blog/1874097