码迷,mamicode.com
首页 > 系统相关 > 详细

Vim程序编辑器

时间:2015-09-06 18:26:26      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:编辑器   visual   程序   interface   

文本编辑器:

行编辑器:sed

全屏编辑器:nano,vi,vim


Vim程序编辑器

 Vim可以认为是vi的高级版本

 Vi:visual interface 全屏文本编辑器

 Vim:vi iMproved 改善的全屏文本编辑器

Vim教程:

 Vimtutor


模式化编辑器:

 编辑模式:键入命令完成光标移动,文本的复制,移动,删除

 输入模式:可以进行任意内容的编辑

 末行模式:输入命令决定保存和离开的方式


模式间切换:

 Vim打开文件直接进入编辑模式;


编辑模式--à输入模式

 输入i,I,a,A,o,O,r,R可进入输入模式(insert mode)

 i:从目前光标所在处插入;

 I:从目前光标所在行的第一个非空格字符处开始插入;

 a:append 从当前光标后追加输入;

 A:从当前行的行尾开始插入;

 o:从光标所在行的下一行,插入新的一行;

 O:从光标所在行的上一行,插入新的一行;

 r:只会替换光标所在的那一个字符一次;

 R:一直替换光标所在的文字,直到按下ESC键为止


输入模式-à编辑模式

 ESC退出输入模式,返回编辑模式


编辑模式-à末行模式

 : 由编辑模式进入末行模式


末行模式-à编辑模式

 ESC 退出末行模式,返回编辑模式


打开vim

 #vim 打开vim程序编辑器

 #vim /PATH/TO/SOMEFILE 打开指定文件

 +#: #为行号,打开后光标定位到#行行首

 +/PATTERN 通过模式来选定光标位置


关闭vim 在末行模式下关闭vim

 :q 退出vim

 :q!  如果修改过文件,不保存退出,使用 ! 强制退出,不保存

 :w  保存编辑的文件

 :w!  若文件属性为"只读"时,强制写入文件,最终能不能保存,取决于对该文件的权限

 :wq  保存后退出

 :wq! 强制保存后退出

 :x 保存退出

 ZZ 大写ZZ 若文件没有改动,则不保存离开,若文件有改动则保存后退出

 :w [filename] 将编辑的文件保存成另一个文件  类似另存为

 :r [filename]  在编辑的文件中,读入另一个文件,将filename文件的内容加到光标所在行的后边

 :#,# w [filename] 将#行到#行的内容保存成filename文件


光标跳转:编辑模式下

字符间跳转:

 h:光标向左移动一个字符

 l:光标向右移动一个字符

 j:光标向下移动一个字符

 k:光标向上移动一个字符

 #COMMAND: 跳转指定行数,如 10k 向上10行

行内跳转:

 ^: 跳转至行首第一个飞空白字符

 0: 跳转至绝对行首

 $: 跳转至绝对行尾

行间移动

 #G: 移动到文件的第#行

 1G,gg:移动到文件的第一行

 G: 移动到文件的最后一行

句间移动:

 ):跳转到下一句

 (:跳转到前一句

段落间移动

 {:跳转到下一段的段首

 }:跳转到上一段的段首


编辑命令:

字符编辑命令:

 X : 大X为向前删除一个字符,相当于Backspace

 x : 小写x向后删除一个字符,相当于del

 #x:删除光标所在处向后#个字符

 xp:将光标所在处的字符和后边一个字符位置对调


删除命令:

d:

 d^ 删除光标所在处到行首的所有字符

 d$ 删除光标所在处到行尾的所有字符

 d0 删除光标所在处到行首的所有字符

 dw,de,db,dG

 dd: 删除光标所在行

 #COMMAND

 注意:删除内容会被vim编辑器保存至缓冲区当中


粘贴命令:p (paste, put)

 如果此前复制或者删除的内容不是完整的行:

 p 小写:粘贴至当前光标所在处的后面

 P 大写:粘贴至当前光标所在处的前面

 如果复制的内容是完整行(可以不止一行)

 p小写:粘贴之当前光标所在行下方

 P大写:粘贴至当前光标所在行上方


复制命令: y, yank

 y:

 yy: 复制光标所在的那一行

 #yy:复制光标所在的向下#行

 #COMMAND

 y1, y1G, yG, y$, y^, y0, ye, yw, yb


改变命令:c, change 兼具文件编辑和模式转换

 c$,c^,c0,cb,

 ce,ce,cw

 cc: 删除光标所在行,进入插入模式

 #COMMAND


撤销此前的编辑工作

 u: undo

 撤销此前的编辑操作

 #u

 Ctrl+r 恢复此前的撤销工作

 .:重复起一个编辑操作


翻屏操作

 Ctrl+f: 屏幕向下翻一页

 Ctrl+b: 屏幕向上翻一页

 Ctrl+d:屏幕向下移动半页

 Ctrl+u:屏幕向上移动半页


示例:

# vim /tmp/test/test_vim +3

技术分享

# vim /tmp/test/test_vim +/^a

技术分享


末行模式:

(1)地址,定界

 :start_pos,end_pos

 #: 第#行

 #,#:从#行到#行

 #,+#:从#行到第#+#行

 .:当前行

 $:组后一行

 %: 全文,相当于1,$


 /pat1/: 第一次被此模式所匹配到的行;

 #,/pat1/:从第#开始,第一次被此模式所匹配到的行

 /pat1/,/pat2/:第一次被此模式所匹配到的行 到 第二次被匹配到的行

 后边可跟编辑命令:

   y,w,r


(2)查找

/PATTERN: 向尾部进行搜索

?PATTERN: 向首部进行搜索

n: 与命令同方向

N: 与命令反方向


(3)查找替换

s:在末行模式下,在地制定界的范围内完成查找替换操作

s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;

\1, \2, ...

&:引用"要找的内容"匹配到的整个内容;

修饰符:

i: 忽略大小写

g: 全局替换

c:提示给用户确认是否需要替换

/:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/

分隔符可替换为其它字符:例如@,#等;


多文件模式:

vim FILE1 FILE2 ...

 :n 编辑下一个文件

 :N 编辑上一个文件

 :files 列出目前这个vim打开的所有文件

 :next 编辑下一个文件

 :first 编辑第一个文件

 :prev 编辑上一个文件

 :last 编辑最后一个文件


 :wqall 保存并退出所有打开文件

 :q!all  强制退出所有打开文件


多文件窗口分割:

 vim -o|-O FILE1 FILE2 ...

 Ctrl+w, ARROW(箭头) 切换窗口

单文件窗口分割:

 Ctrl+w, s: split, 水平分割

 Ctrl+w, v: vertical, 垂直分割


定制vim的某些工作特性:

(1) 行号

 显示:set nu

 禁用:set nonu

(2) 括号匹配

 显示:set sm

 禁用:set nosm

(3) 自动缩进:

 set ai

 set noai

(4) 高亮搜索

 set hlsearch

 set nohlsearch

(5) 语法着色

 syntax on

 syntax off

(6) 忽略字符大小写

 set ic

 set noic


 :help 获取帮助

 :help SUBJECT


特性设定的永久生效方式:

全局配置文件:/etc/vimrc

用户个人的配置文件:~/.vimrc 默认不存在可以手动创建

# vim ~/.vimrc

1 "这个文件说引号是注释

2 set nu          "显示行号

3 set hlsearch    "高亮显示

4 set autoindent  "自动缩进

5 syntax on       "进行语法检测颜色显示


练习:

1、复制/etc/grub2.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符;CentOS: /etc/grub.conf

 %s/^[[:space:]]//g


2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

 %s/^\s\+/#&/g


3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

 %s@/etc/sysconfig/init@/var/log@g


4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#

 %s/^\(#\)\(\s\+\)/\2/g



如有错误,敬请指正!

谢谢!

Vim程序编辑器

标签:编辑器   visual   程序   interface   

原文地址:http://rogerwang.blog.51cto.com/5326353/1691971

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!