Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532803
  • 博文数量: 137
  • 博客积分: 3170
  • 博客等级: 中校
  • 技术积分: 1455
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-17 11:47
文章分类

全部博文(137)

文章存档

2015年(2)

2013年(1)

2012年(6)

2011年(5)

2010年(62)

2009年(61)

我的朋友

分类: LINUX

2009-05-15 18:37:45

在修改配置文件时,很多时候,使用vi很方便。
http://blog.interlinked.org/tutorials/vim_tutorial.html
以下主要摘自vimtutor。
0. ESC键等同于CTRL-[ 或 ^[
1.在normal状态下,按x可将光标处字母删除。
2. :q!  强制退出
3. :wq  保存所有修改,也可以用ZZ.另存为命令 :w newfilename
3. 光标停留在单词开始,dw命令可以删除该单词
4. normal  d$ 從當前光標刪除到行末
5.输入dd可以删除当前行,2dd删除两行。
6.取消前一个操作,u命令,U恢复到该行初始状态。
7.Ctrl-R撤销掉撤销命令
8.将删除的行插入到指定位置
dd删除指定行,然后在normal态下,将光标放置到插入行的上方,按p键。
9.替换一个字符,光标置于被替换的字符上,按r以及目的字符。
10.修改一个单词,光标置于待修改字母上,按下cw。
11.修改光标到行尾。按d$
12.按下ctrl-g,可以显示当前文本的行号line和总行数,按下shift-g可以到文本的末尾,输入line,并按下shift-g可以回到line行。
13.normal状态下,输入/(输入?为逆向查找字符串),输入搜索词,回车,按n搜索下一个,按shift-n搜索方向与n相反。
/ command searches forwards (downwards) in the file, while the ? command searches backwards (upwards)
13.1  常用搜索regex

13.1.1 查找只含有'the'的行:  ^the$
13.1.2 vi搜索时候,默认大小写敏感。把vi设置为smart search,方法:
 set ignorecase smartcase。
另外,搜索时,为了使大小写敏感,可以在搜索词前加上'\C',不敏感加上'\c'
13.1.3 搜索'const'并把光标置于搜索词的末尾:
/const/e
13.1.4 重复上一个搜索按/即可,//也行。
13.1.5 在搜索时,如果文件被全部反选中(打开其他文件同样被反选中),那么可以再搜索一个不在文件中的字符串,即可解除反选中。感觉这是vim的bug.
以下主要翻译于:

13.1.6
/\(ab\)*  搜索"ab", "abab", "ababab",..和空串 ""

有空串的话意义不大。
/\(ab\)/+  可以排除空串。
"ab", "abab", "ababab",..
/ab\+
  匹配"", "abb", "abbb", etc
/ab\{3,5}  匹配
"abbb", "abbbb" and "abbbbb"

13.1.7  搜索匹配一般是贪婪匹配,vi中却有最小匹配,用的时候可以看看manual.
13.1.8   高级搜索
/foo\|bar
    搜索"foo"或"bar"
/\(foo\|bar\)\+
   搜索"foo", "foobar", "foofoo", "barfoobar", etc
/end\(if\|while\|for\)
   搜索 "endif", "endwhile" and "endfor"。

/forever\&...
搜索 "for" in "forever". 而不搜索 "fortuin",
搜索某个特定单词的某个部分。
[a-z],搜索a-z范围的字符,[]匹配一个字符。
/[0123456789abcdef]
  等价于  /[0-9a-f]
如果还要搜索'-',则可以
/[-0-9a-f]/[0-9a-f-]
为了避免搜索特定字符,可以在开始使用^,在此情形下,匹配所有除了指定字符的所有其他字符。
/"[^"]*" 搜索 "foo" and "3!x", including the double .
/"[^"]"
13.1.9 匹配换行:
/the\nword
匹配以"the"结尾,并且下一行开始为"word"的情形。若要同时匹配"the word",可以使用:
/the\_sword
若要可以匹配任意多个空格:
/the\_s\+word
以上正则表达式同样匹配

"the " is at the end of a line and " word" at the
start of the next one.
注意:"\s" 匹配 white space,
"\_s" 匹配 white space or a line break.
"\_" 很多其他的也可以在前面加上"\_" 以匹配一个换行
例如:"\_." 匹配一个换行符或任意字符。
/"\_[^"]*" 匹配一段在双引号中的文字,该段文字可能分成若干行。

13.1.9 替换操作:
First occurrence on current line:    :s/OLD/NEW
Globally (all) on current line:      :s/OLD/NEW/g
Between two lines #,#:               :#,#s/OLD/NEW/g

Every occurrence in file:            :%s/OLD/NEW/g



14.用%进行括号匹配
15. :!cmd 可以执行该cmd命令。
16. :! filename保存文件(可以有路径)
17. 输入o将在光标的下方打开新的一行并进入插入mode,输入O将在上方打开新的一行。
18.输入a在光标后可以插入文本,输入A可以在光标所在行的末尾输入文本。
19复制外部数据到vi中,目前只能用鼠标,并使vi编辑的文件进入插入状态。
20. 0到行首,$到行尾。
21.到最顶行,目前用:1算了,更好的是gg.
22.
  A到行尾并进入编辑状态。
23.多行注释和反注释
注释:Ctrl+v进入可视化列选择模式, 移到光标最后需要注释的行,nG, 按I,输入注释符,然后ESC即可。
uncomment: Ctrl+v ,移到光标把注释符选中, d
vi 的注释还要选择注释符,而emacs则统是选中后按下ALT-;,emacs可以自动识别需要的注释符。
23.配置vi需要编辑的文件~/.vimrc,还有一个/etc/vimrc,主要是动前一个吧。
24.有时候可以Ctrl-z使vim进入后台,以便返回命令行,再fg转回前台
25.vi分割窗口
25.1 :split  分割为两个窗口,C-w w或 C-w C-w进行切换。
:close关闭当前窗口  :only  只保留当前的窗口
:split path/to/file  可以打开相应的文件。
26. 按 r,再按相应的字母可以替换当前的。
27. d$删除光标到行尾   d0光标到行首。
28. 10yy复制光标下面含光标所在行10行。
29. y$ 复制光标(含光标字符)到行尾。
30. y0  复制光标到行首(不含光标处).
31.vi的波浪线代表空行。
32.
[count] command [where]   vi的command mode的命令格式,入乡随俗。
33. p粘贴到当前光标以以下的行,P以上。






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