Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126473
  • 博文数量: 83
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-13 10:26
个人简介

- 毅力与勇气是事业的双飞翼; - 在尝试中成长,在失败中奋起。 - 概览 -> 细读 -> 概览 - 书不在多,在于精。

文章分类

全部博文(83)

文章存档

2016年(2)

2015年(6)

2014年(75)

我的朋友

分类: LINUX

2014-06-09 11:16:56

http://www.cnblogs.com/xdzone/archive/2011/03/11/1981102.html


一. VIM高亮
进入vim后,在普通模式下输入如下命令,开启php代码高亮显示
 
  :syntax enable
 
  :source $VIMRUNTIME/syntax/php.vim
 
二. VI常用命令
_______________________________________________________
一般模式                           光标移动
__________________________________________________________
h 或 向左方向键                    光标向左移动一个字符
j 或 向下方向键                    光标向下移动一个字符
k 或 向上方向键                    光标向上移动一个字符
l 或 向右方向键                    光标向右移动一个字符
Ctrl + f                           屏幕向前翻动一页(常用)
Ctrl + b                           屏幕向后翻动一页(常用)
Ctrl + d                           屏幕向前翻动半页
Ctrl + u                           屏幕向后翻动半页
+                                  光标移动到非空格符的下一列
-                                  光标移动到非空格符的上一列
n                           接下数字后再按空格键,光标会向右移动这一行的
                                   n个字符,例如20,则光标会向右移动20个字符
0                                  (这是数字0) 移动到这一行的第一个字符处(常用)
$                                  移动到这一行的最后一个字符处(常用)
H                                  光标移动到这个屏幕最上方的那一行
M                                  光标移动到这个屏幕中央的那一行
L                                  光标移动到这个屏幕最下方的那一行
G                                  移动到这个文件的最后一行(常用)
nG                                 移动到这个文件的第n行.例如20G,则会移动到这个文件的
                                   第20行(可配合:set nu)
n                           光标向下移动n行(常用)
________________________________________________________________
一般模式                           查找替换
________________________________________________________________
/word                              在光标之前查找一个名为word的字符串
?word                              在光标之前查找一个名为的word字符串
:n1,n2s/word1/word2/g              在第n1与n2行之间查找word1这个字符串,并将该字符串替换
                                   为word2(常用)
:1,$s/word1/word2/g                从第一行到最后一行查找word1字符串,并将该字符串替换
                                   为word2(常用)
:1,$s/word1/word2/ge               从第一行到最后一行查找word1字符串,并将该字符串替换
                                   为word2,且在替换前显示提示符让用户确认(confirm)(常用)
__________________________________________________________________
一般模式                           删除 复制与粘贴
__________________________________________________________________
x,X                                x为向后删除一个字符,X为向前删除一个字符(常用)
nx                                 向后删除n个字符
dd                                 删除光标所在的那一整行(常用)
ndd                                删除光标所在行的向下n行,例如,20dd则是删除20行(常用)
d1G                                删除光标所在行到第一行的所有数据
dG                                 删除光标所在行到最后一行的所有数据
yy                                 复制光标所在行(常用)
nyy                                复制光标所在行的向下n行,例如,20yy则是复制20行(常用)
y1G                                复制光标所在行到第一行的所有数据
yG                                 复制光标所在行到最后一行的所有数据
p,P                                p为复制的数据粘贴在光标下一行,P则为粘贴在光标上一行(常用)
J                                  将光标所在行与下一行的数据结合成一行
u                                  恢复前一个动作(常用)
 
____________________________________________________________________
编辑模式                          
___________________________________________________________________
i,I                                插入:在当前光标所在处插入输入的文字,已存在的字符会向后
                                   退(常用)
a,A                                添加:由当前光标所在处的下一个字符开始输入,已存在的字符
                                   会向后退(常用)
o,O                                插入新的一行:从光标所在处的下一行行首开始输入字符(常用)
r,R                                替换:r会替换光标所指的那一个字符:R会一直替换光标所指的
                                   文字,直到按下Esc为止(常用)
Esc                                退出编辑模式,回到一般模式(常用)
 
___________________________________________________________________
命令行模式                          
___________________________________________________________________
 
:w                                 将编辑的数据写入硬盘文件中(常用)
:w!                                若文件属性为只读,强制写入该文件
:q                                 退出vi(常用)
:q!                                若曾修改过文件,又不想保存,使用!为强制退出不保存文件
:wq                                保存后退出,若为:wq!,则为强制保存后退出(常用)
:w [filename]                      将编辑数据保存为另一个文件(类似另存新文档)
:r [filename]                      在编辑的数据中,读入另一个论据的数据,亦即将filename这
                                   个文件内容加到光标所在行的后面
:set nu                            显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu                          与set nu相反,为取消行号
n1,n2 w [filename]                 将n1到n2的内容保存为filename 这个文件







**************************************************************************************************************************************


1 查找

/xxx(?xxx)    表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找其中xxx可以是正规表达式,关于正规式就不多说了。一般来说是区分大小写

                的, 要想不区分大小写, 那得先输入:set ignorecase查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找

*(#)          当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找

g*(g#)      此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串

gd            本命令查找与光标所在单词相匹配的单词, 并将光标停留在文档的非注释段中第一次出现这个单词的地方

%             本命令查找与光标所在处相匹配的反括号, 包括 () [] { }

f(F)x         本命令表示在光标所在行进行查找, 查找光标右(左)方第一个x字符 
                找到后: 
                输入 ; 表示继续往下找 
                输入 , 表示反方向查找

2 快速移动光标 
   在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定位和编辑 因此能更快一点移动光标是很有用的

w(e)         移动光标到下一个单词 
b             移动光标到上一个单词

0             移动光标到本行最开头 
^             移动光标到本行最开头的字符处 
$             移动光标到本行结尾处

H             移动光标到屏幕的首行 
M             移动光标到屏幕的中间一行 
L              移动光标到屏幕的尾行 
gg            移动光标到文档首行 
G             移动光标到文档尾行 
c-f           (即 ctrl 键与 f 键一同按下) 本命令即 page down 
c-b          (即 ctrl 键与 b 键一同按下, 后同) 本命令即 page up

''             此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查找到某个单词后, 再输入此命令则回到上次停留的位置

'              此命令相当好使, 它移动光标到上一次的修改行

`              此命令相当强大, 它移动光标到上一次的修改点

3 拷贝, 删除与粘贴 
   在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴 其中拷贝与删除是与光标移动命令结合的, 看几个例子就能够明白了

yw              表示拷贝从当前光标到光标所在单词结尾的内容 
dw              表示删除从当前光标到光标所在单词结尾的内容 
y0              表示拷贝从当前光标到光标所在行首的内容 
d0              表示删除从当前光标到光标所在行首的内容 
y$              表示拷贝从当前光标到光标所在行尾的内容 
d$              表示删除从当前光标到光标所在行尾的内容 
yfa             表示拷贝从当前光标到光标后面的第一个a字符之间的内容 
dfa             表示删除从当前光标到光标后面的第一个a字符之间的内容

特殊地: 
yy              表示拷贝光标所在行 
dd              表示删除光标所在行 
D             表示删除从当前光标到光标所在行尾的内容

关于拷贝, 删除和粘贴的复杂用法与寄存器有关, 可以自行查询

4 数字与命令 
   在 vi 中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行号定位 如:

5fx              表示查找光标后第5个x字符

5w(e)          移动光标到下五个单词

5yy             表示拷贝光标以下 5 行 
5dd             表示删除光标以下 5 行

y2fa            表示拷贝从当前光标到光标后面的第二个a字符之间的内容

:12,24y       表示拷贝第12行到第24行之间的内容 
:12,y           表示拷贝第12行到光标所在行之间的内容 
:,24y           表示拷贝光标所在行到第24行之间的内容 删除类似

5 快速输入字符 
        在 vi 中, 不要求你输入每一个字符, 可以有很多种方法快速输入一些字符。 使用 linux/unix 的同学一定有一个经验,  在命令行下输入命令时敲入头几个字符再按TAB 系统就会自动将剩下的字符补齐, 假如有多个匹配则会打印出来,这就是著名的命令补齐。vi  中有许多的字符串补齐命令, 非常方便。

c-p(c-n)        在编辑模式中, 输入几个字符后再输入此命令则 vi 开始向上(下)搜索开头与其匹配的单词并补齐, 不断输入此命令则循环查找此命令会在所有在这个vim

                    程序中打开的文件中进行匹配

c-x-l           在编辑模式中, 此命令快速补齐整行内容, 但是仅在本窗口中出现的文档中进行匹配

c-x-f           在编辑模式中, 这个命令表示补齐文件名 如输入: 
                /usr/local/tom 后再输入此命令则它会自动匹配出: 
                /usr/local/tomcat/

abbr          即缩写 这是一个宏操作, 可以在编辑模式中用一个缩写代替另一个字符串 比如编写java文件的常常输入 Systemoutprintln, 这很是麻烦, 所以应该用缩写

                来减少敲字 可以这么做: :abbr sprt Systemoutprintln     以后在输入sprt后再输入其他非字母符号, 它就会自动扩展为Systemoutprintln

6 替换 
   替换是 vi 的强项, 因为可以用正规表达式来匹配字符串以下提供几个例子

:s/aa/bb/g    将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb 
:s/\/bb/g   将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词 
:%s/aa/bb/g     将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb 
:12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb 
:12,23s/^/#/ 将从12行到23行的行首加入 # 字符 
:%s= *$==    将所有行尾多余的空格删除 
:g/^\s*$/d    将所有不包含字符(空格也不包含)的空行删除

7.更多删除

x    删除光标下的字符 ("dl" 的缩写)
X    删除光标前的字符 ("dh" 的缩写)
D    从当前位置删除到行尾 ("d$" 的缩写)
dw    从当前位置删除到下一个单词开头
db    从当前位置删除到前一个单词的开头
diw    删除光标上的单词 (不包括空白字符)
daw    删除光标上的单词 (包括空白字符)
dG    删除到文件末
dgg    删除到文件首

"dl"    删除字符 (缩写: "x")            |dl|
"diw"    删除内含单词                *diw*
"daw"    删除一个单词                *daw*
"diW"    删除内含字串 (见 |WORD|)        *diW*

"daW"    删除一个字串 (见 |WORD|)        *daW*
"dd"    删除一行                |dd|
"dis"    删除内含句子                *dis*
"das"    删除一个句子                *das*
"dib"    删除内含 '(' ')' 块            *dib*
"dab"    删除一个 '(' ')' 块            *dab*
"dip"    删除内含段落                *dip*
"dap"    删除一个段落                *dap*
"diB"    删除内含 '{ ' ' }' 大块            *diB*
"daB"    删除一个 '{ ' ' }' 大块            *daB

8.注释多行

(1)ctrl+v进入列模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,进入插入模式,输入#,再按esc,就会全部注释

(2)使用命令

:s/^/#  #注释当前行

:m,ns/^/#  #注释m到n行

:.,+3s/^/#  #注释当前行和当前行后面的3行

:%s/^/#  #注释所有行


阅读(422) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~