vim与gvim技巧1.docx

上传人:b****6 文档编号:3712968 上传时间:2022-11-24 格式:DOCX 页数:20 大小:28.74KB
下载 相关 举报
vim与gvim技巧1.docx_第1页
第1页 / 共20页
vim与gvim技巧1.docx_第2页
第2页 / 共20页
vim与gvim技巧1.docx_第3页
第3页 / 共20页
vim与gvim技巧1.docx_第4页
第4页 / 共20页
vim与gvim技巧1.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

vim与gvim技巧1.docx

《vim与gvim技巧1.docx》由会员分享,可在线阅读,更多相关《vim与gvim技巧1.docx(20页珍藏版)》请在冰豆网上搜索。

vim与gvim技巧1.docx

vim与gvim技巧1

[vim与gvim技巧]vim&gvim技巧大全

(1)

 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系统就会自动将剩下的字符补齐,假如有多个匹配则会打印出来.这就是著名的命令

补齐(其实windows中也有文件名补齐功能).vi中有许多的字符串补齐命令,非常方便.

 c-p(c-n)       在编辑模式中,输入几个字符后再输入此命令则vi开始向上(下)搜

                 索开头与其匹配的单词并补齐,不断输入此命令则循环查找.此命令

                 会在所有在这个vim程序中打开的文件中进行匹配.

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

                 文档中进行匹配.

 c-x-f          在编辑模式中,这个命令表示补齐文件名.如输入:

                 /usr/local/tom后再输入此命令则它会自动匹配出:

                 /usr/local/tomcat/

 abbr           即缩写.这是一个宏操作,可以在编辑模式中用一个缩写代替另一个

                 字符串.比如编写java文件的常常输入System.out.println,这很

                 是麻烦,所以应该用缩写来减少敲字.可以这么做:

                 :

abbrsprtSystem.out.println

                 以后在输入sprt后再输入其他非字母符号,它就会自动扩展为System.

                 out.println

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.多文件编辑

  在一个vim程序中打开很多文件进行编辑是挺方便的.

 :

sp(:

vsp)文件名   vim将分割出一个横(纵)向窗口,并在该窗口中打开新文件.

                     从vim6.0开始,文件名可以是一个目录的名称,这样,vim会

                     把该目录打开并显示文件列表,在文件名上按回车则在本窗口打

                     开该文件,若输入O则在新窗口中打开该文件,输入?

可以看

                     到帮助信息.

 :

e文件名          vim将在原窗口中打开新的文件,若旧文件编辑过,会要求保存.

 c-w-w              vim分割了好几个窗口怎么办?

输入此命令可以将光标循环定位

                     到各个窗口之中.

 :

ls                此命令查看本vim程序已经打开了多少个文件,在屏幕的最下方

                     会显示出如下数据:

                     1  %a     "usevim.html"        行162

                     2  #      "xxxxxx.html"        行0

                     其中:

                     1              表示打开的文件序号,这个序号很有用处.

                     %a             表示文件代号,%表示当前编辑的文件,

                                     #表示上次编辑的文件

                     "usevim.html"  表示文件名.

                     行162         表示光标位置.

 :

b序号(代号)      此命令将指定序号(代号)的文件在本窗口打开,其中的序号(代号)

                     就是用:

ls命令看到的.

 :

setdiff          此命令用于比较两个文件,可以用

                     :

vspfilename

                     命令打开另一个文件,然后在每个文件窗口中输入此命令,就能看

                     到效果了.

8.宏替换

  vi不仅可以用abbr来替换文字,也可以进行命令的宏定义.有些命令输起来很费劲,

因此我把它们定义到-上,这样就很方便了.这些配置可以预先写到~/.vimrc

(windows下为$VIM/_vimrc)中,写进去的时候不用写前面的冒号.

 :

nmap:

nohls             取消被搜索字串的高亮

 :

nmapw                 命令模式下转移光标到不同窗口

 :

imap              输入模式下运行

 :

nmap:

%s=*$==         删除所有行尾多余的空格.

 :

imap            同上

 :

java中:

(注,这里为什么说java中,因为以下定义对其他文件格式不起作用,下文

           会说到如何实现这一点)

 :

nmap:

compjavac:

mak-d.%

      此命令用javac编译java文件,它会自动将光标定位到出错点.不过这需要定

      义一个javac.vim文件在$VIM/compiler下,在javac.vim里面只有两行字:

         setlocalmakeprg=javac

         setlocalerrorformat=%A%f:

%l:

\%m,%-Z%p^,%-C%.%#

 :

nmap:

compant:

mak

      此命令用ant编译java文件,它会自动将光标定位到出错点.一般来说,安装

      vim后已经有了compiler/ant.vim文件,因此这个命令可以直接使用.但是需要

      在当前目录下有build.xml文件,当然还必须安装ant才行.

 :

nmap:

cl                此命令用于查看所有的编译错误.

 :

imap

 :

nmap:

cc                此命令用于查看当前的编译错误.

 :

imap

 :

nmap:

cn                此命令用于跳到下一个出错位置.

 :

imap

 :

nmap:

cp                此命令用于跳到上一个出错位置.

 :

imap

 :

nmap:

JavaBrowser

      此命令用于在窗口左部分割出一个新窗口,里面的内容是java的资源树,包括

      本文件中出现的类,类的成员变量及成员方法,就好像JCreator表现的那样.

      在这个窗口中输入?

会看到帮助.嘿嘿,很好用,不过需要ctags支持.

 :

imap

9.TAB

  TAB就是制表符,单独拿出来做一节是因为这个东西确实很有用.

  <<                 输入此命令则光标所在行向左移动一个tab.

  >>                 输入此命令则光标所在行向右移动一个tab.

  5>>                输入此命令则光标后5行向右移动一个tab.

  :

12,24>            此命令将12行到14行的数据都向右移动一个tab.

  :

12,24>>           此命令将12行到14行的数据都向右移动两个tab.

  那么如何定义tab的大小呢?

有人愿意使用8个空格位,有人用4个,有的用2个.

  有的人希望tab完全用空格代替,也有的人希望tab就是tab.没关系,vim能

  帮助你.以下的设置一般也都先写入配置文件中,免得老敲.

  :

setshiftwidth=4  设置自动缩进4个空格,当然要设自动缩进先.

  :

setsts=4         即设置softtabstop为4.输入tab后就跳了4格.

  :

settabstop=4     实际的tab即为4个空格,而不是缺省的8个.

  :

setexpandtab     在输入tab后,vim用恰当的空格来填充这个tab.

10.autocmd

   这个命令十分的强大,可以用这个命令实现对不同的文件格式应用不同的配置;可以

在新建文件时自动添加上版权声明等等.这些命令一般定义在~/.vimrc这样的配置文件

里面.由于他很强大,所以我不能给出很具体的说明,只能举几个例子,详细的请看帮助.

 :

autocmd!

              删除所有之前的自动命令.

 autocmdFileType       java source~/.vim/files/java.vim

 autocmdFileType       java source~/.vim/files/jcommenter.vim

   以上两条命令让我在打开java文件时才应用后面提到的两个配置文件.

 autocmdBufNewFile     *.java 0r~/.vim/files/skeletons/java.skel

   以上这条命令让我在新建java文件时自动加入java.skel文件的内容.

 autocmdBufNewFile     *.java normalgnp

   以上这条命令让我在新建java文件时自动运行gnp命令,这个命令进行一些特殊化

   处理,比如将新java文件中的__date__替换成今天的日期什么的.

11.常用脚本

   在你可以发现很多脚本(script),这些脚本常常有让你意想不到的作用.

我常用的有:

   jcommenter.vim       自动加入javadoc风格的注释.

   JBrowser.vim         类资源浏览.C,C++等可以用Tlist

   还有许多有用的,比如checkstyle.vim可以检验你的编程风格,jad.vim可以直接

   反编译.class文件等等.

12.常用配置

   在~/.vimrc配置文件中你常常需要一些个性化配置.比如上面写的一些宏定义,一些

autocmd定义等等.比如:

   setsuffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc

       这样在vim中打开文件时,按tab键补齐文件名时它会忽略上述文件.

   setnu         显示行号

   setai         设置自动缩进

   mapYy$       让Y和D一样,要不然Y的本意和yy一样.

13.其他

   还有许多有意思的命令,记录在这里免得忘记.

   .                                              重复上次编辑命令.

   :

g/^/exec"s/^/".strpart(line(".")."",0,4)  在行首插入行号

   :

runtime!

syntax/2html.vim                     转换txt成html,会按照你的

                                                   颜色配置来转

VI高级命令集锦及VIM应用实例

作者:

 转自:

http:

//linux- 本文已被阅读:

5次

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

本文由正泰linuxhttp:

//linux-搜集,整理,如需转载,请注明出处!

本站有大量的linux电子教程,软件,技术文档,欢迎大家访问!

站长阿泰qq:

253222170

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

VI高级命令集锦及VIM应用实例

javalee写到:

1.交换两个字符位置

xp

2.上下两行调换

ddp

3.把文件内容反转

:

g/^/m0/(未通过)

4.上下两行合并

J

5.删除所有行

dG

6.从当前位置删除到行尾

d$

7.从当前位置复制到行尾

y$如果要粘贴到其他地方p就可以了

由于vi是建立在EX上的所以当键入:

时就来到了EX命令状态

8.

:

abstringstrings

例如":

abusaUnitedStatesofAmerica",

当你在文见里插入usa时

UnitedStatesofAmerica就蹦出来了

9.

:

mapkeysnew_seq

定义你当前键盘命令

10.

:

set[all]

viorex的编辑状态

如显示每行:

setnu

11.

在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,可刚复制的内容粘贴在光标处的

下面。

12.

单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S

13.

:

%s/old_word/new_word/g

这个指令是于在整个文件中替换特定字符串

14.光标控制

k:

上移nk上移n行

j:

下移nj下移n行

将光标移到第n行,按下mk

将光标移到第m行,按下"ay'k

即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等

这样就可以将你常用的需要复用的内容粘贴到不同的寄存器中以备用

想粘贴到某处,直接将光标移到某地,按下'ap即可,以此类推,b,c........寄存器等

在当前屏幕中

H跳到第一行

M跳到中间一行

L跳到最后一行

15.

表8-2删除命令

删除命令操作

dl删除当前字符(与x命令功能相同)

d0删除到某一行的开始位置

d^删除到某一行的第一个字符位置(不包括空格或TAB字符)

dw删除到某个单词的结尾位置

d3w删除到第三个单词的结尾位置

db删除到某个单词的开始位置

dW删除到某个以空格作为分隔符的单词的结尾位置

dB删除到某个以空格作为分隔符的单词的开始位置

d7B删除到前面7个以空格作为分隔符的单词的开始位置

d)删除到某个语句的结尾位置

d4)删除到第四个语句的结尾位置

d(删除到某个语句的开始位置

d}删除到某个段落的结尾位置

d{删除到某个段落的开始位置

d7{删除到当前段落起始位置之前的第7个段落位置

dd删除当前行

d/text删除从文本中出现"text"中所指定字样的位置,一直向前直到下一个该字样所出现的

位置(但不包括该字样)之间的内容

dfc删除从文本中出现字符"c"的位置,一直向前直到下一个该字符所出现的位置(包括

该字符)之间的内容

dtc删除当前行直到下一个字符"c"所出现位置之间的内容

D删除到某一行的结尾

d$删除到某一行的结尾

5dd删除从当前行所开始的5行内容

dL删除直到屏幕上最后一行的内容

dH删除直到屏幕上第一行的内容

dG删除直到工作缓存区结尾的内容

d1G删除直到工作缓存区开始的内容

修改命令操作

cl更改当前字符

cw修改到某个单词的结尾位置

c3w修改到第三个单词的结尾位置

cb修改到某个单词的开始位置

cW修改到某个以空格作为分隔符的单词的结尾位置

cB修改到某个以空格作为分隔符的单词的开始位置

c7B修改到前面7个以空格作为分隔符的单词的开始位置

c0修改到某行的结尾位置

c)修改到某个语句的结尾位置

c4)修改到第四个语句的结尾位置

c(修改到某个语句的开始位置

c}修改到某个段落的结尾位置

c{修改到某个段落的开始位置

c7{修改到当前段落起始位置之前的第7个段落位置

ctc修改当前行直到下一个字符c所出现位置之间的内容

C修改到某一行的结尾

cc修改当前行

5cc修改从当前行所开始的5行内容

.重复上一次修改!

表8-4替换命令

替换命令操作

G的开头处

   "        移至当前行上一次所在位置(在光标移动之后)――一个双引号

   ''       移至当前行上第一次所在位置的行的开头处(在光标移动之后)――两个单引号

19.

同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。

但是我发现一个BUG:

在用CTRL-SHIFT-6切换到上一个文件后,用:

args查看多文件vi状态时,

屏幕底部仍然显示目前vi的是刚才的文件。

(在HP-UX,Solaris,AIX上通过)

也可以使用:

:

e#

进行切换

20.

sco下VI要在文本前同样的字符加用

%s/^/要加的内容/g要在文本后同样的字符加

%s/$/要加的内容/g

21.

如何去掉文本中的^M硬回车?

不必用binary传回去再ascii传回来的方式,用shell或者unix语句实现。

catfilename|tr-d'\015'>newfile

不同的unix系统还存在一些其他不同的命令,如:

doscp

sed也可以实现这个功能.

dos2unixfilenamefilename2

反之

unix2dosfilenamefilename2

在vi中用:

$s/^M//g

^是crtl-Vcrtl-M

22.如何在"unix命令行"下将一个文件的某字符串用另一个串换掉

sed's/string1/string2/gp'file1>file2

23.将/etc/hosts下所有的地址都ping2次

1#/usr/bin/sh

2#grad/etc/hostsandpingeachaddress

3cat/etc/hosts|grep-v'^#'|whilereadLINE

4do

5ADDR=`awk'{print$1}'`

6forMACHINEin$ADDR

7do

8ping$MACHINE-n2

9done

10done

24

到前一个函数[[,到下一个函数]],括号配对%,交叉参考Ctrl_](事先用ctags做索引),回来用e#`编辑一个函数:

vi-t函数名,编辑加密文本vi-X

25

在插入模式下ctrl+p,自动补齐剩余单词,以赖规则:

ta

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1