*NIX工具使用(1) Vim notes
Vim notes
2006-12-01 23:10
///很简单的一些基本功能
滚屏 CTRL-U 使文本向下滚动半屏。 CTRL-D 使文本向下滚动半屏。 CTRL-F 使文本向前滚动一整屏。(实际上是整屏去两行) CTRL-B 使文本向后滚动一整屏。 CTRL-E 使文本向上滚动一行。 CTRL-F 使文本向下滚动一行。(如果在使用windows兼容的映射键,它可能被映射为重做而 不是向下滚屏) zz 会把当前行置为屏幕正中央 zt 会把当前行置为屏幕顶端。 zb 会把当前行置为屏幕底端。 z字取其象形意义模拟一张纸的折叠及变形位置重置,广泛用作折叠类命令的前辍 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p 将最后一次删除(包括dd和x删除的)的内容置入光标之后 (cut->paste) r 和一个字符替换光标所在位置的字符。 R 连续替换多个字符,直到按ESC回到普通模式 cw 改变一个单字/单词的部分或者全部 使用c指令的其他更改类命令: 操作格式是∶ [number] c object 或者 c [number] object object: w 代表单字/单词,$代表行末等等。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ctrl-g 显示当前光标所在位置和文件状态信息 Shift-G 将光标跳转至文件最后一行 行号 + Shift-G 将光标移动至该行号代表的行。 CTRL-G 显示文件名、当前行号、总的行数、当前行所在文件中的百分比、当前列. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 查找: /xxx(?xxx) 向后查找xxx(向前); n 在同一方向上重复上一次,其前可以带一个数字 N 反方向重复上一次 % 查找配对的括号 )、]、} 注: 1、字符.*[]^%/?~$有特殊意义,如果要找的东西包括这些内容,要在该字符前加\ 4、输入/后(或者输入/和要查找字符串的首字符后),按上下箭头键可以在查找历史 中查找过的搜索。 注: 以":"开始的命令也有一个历史记录. 它让你找到用过的冒号命令重复执行 它. 这两个命令历史记录是相互独立的. 5、如果要查的词word是一个不容易输入且易出错的词,一个便捷的方法是把光标定 位于这个word上, 然后按下"*"键。Vim将会取当前光标所在的word并将它作用目 标字符串进行搜索。"#"命令是"*"的反向版. 还可以在这两个命令前加一个命令 计数。 6、查找以word作为词的末尾时使用“/word\>”。"\"是一个特殊的记法, 它只匹配 一个word的结束处.近似地,"\"匹配到一个word的开始处。所以如果查找作为一 个独立的单词的word,可以用"/\<word\>",这样就不会匹配"there"和"soothe"。 7、关于搜索结果的高亮显示等,参见下面的 :set xxx 命令。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 替换: :s/old/new 将当前行内 第一个 old 替换为new :s/old/new/g 将当前行内 所有 old 替换为new :s/\<aa\>/bb/g 将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词 :#,#s/old/new/g 将两个号码代表的行号之间的所有 old 替换为 new :12,23s/^/#/ 将从12行到23行的行首加入 # 字符 :%s/old/new/g 将 文件内 所有 old 替换为 new :%s/old/new/gc 将 文件内 所有 old 替换为 new,每个替换时询问 :%s= *$== 将所有行尾多余的空格删除 :g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除. $ 将光标移动到本行的末尾。 :!command 执行一个外部命令 command ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 文件读写: :w FILENAME 当前编辑的文件保存到名为 FILENAME 的文件中 :#,#w FILENAME 当前编辑的文件的两个行号之间的内容保存到名为 FILENAME 的文件中 :r FILENAME 提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面 :set xxx 设置 xxx 选项,如 :set ic (ignore case)忽略大小写 :set ignorecase 忽略大小写 :set noignorecase :set hls (highlight search)高亮显示搜索结果 :set hlsearch 同上 :set nohlsearch 关闭高亮搜索 : nohlsearch 只去掉当前的高亮显示,它只是暂时关闭了该语法项高亮显示, 一旦你再次执行搜索指令,被匹配到的目标就又会以高亮形式显 示了 :set is (incsearch)在键入目标字符串的过程中Vim就同时开始了搜索工作 :set incsearch 同上 :set nowrapscan 使搜索过程在文件结束时就停止。反向时到达文件开始时停止。 wrapscan选项的默认值是开。 和查找“/”命令配合,可以使所有要查的内容以高亮显示 :set number 在每行的前面显示一个行号。 :set nonumber 关闭该选项 注:no放置在boolean选项前面表示关闭该选项,如"number"是一个二值选项 :set ruler 在Vim窗口的右下角显示当前光标位置 网络上有很多文档, 以Vim查看时如果set number, 则每行会超出屏幕少许,从而被折 叠放到下一行上, 看起来很不方便, 这时就可以使用:set nonumber ruler, 如果还是坚持 想打开number, 可以考虑重新格式化文本, 请参考|gq| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在线帮助 - 按下 <HELP> 键 (如果键盘上有的话) - 按下 <F1> 键 (如果键盘上有的话) - 输入 :help <回车> 提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助,如:help w 第八讲∶创建一个启动脚本 ** 启用vim的功能 ** Vim的功能特性要比vi多得多,但大部分功能都没有缺省激活。为了启动更多的 功能,您得创建一个vimrc文件。 1. 开始编辑vimrc文件,这取决于您所使用的操作系统∶ :edit ~/.vimrc 这是Unix系统所使用的命令 :edit $VIM/_vimrc 这是Windows系统所使用的命令 2. 接着导入vimrc范例文件∶ :read $VIMRUNTIME/vimrc_example.vim 3. 保存文件,命令为∶ :w 在下次您启动vim的时候,编辑器就会有了语法高亮的功能。您可以继续把您喜 欢的其它功能设置添加到这个vimrc文件中。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 移动命令:规律:一个命令的大写字母形式会做同样的事情,但是方向相反 $ 命令将光标移动到当前行行尾. $# 接受一个计数,表示移动到后面第n行行尾 ^ 命令将光标移动到当前行的第一个非空白字符上 0 总是把光标移动到当前行的第一个字符上 一个最有用的移动命令是单字符搜索命令: ; 重复. , 也是重复同样的命令, 但是方向与原命令的方向相反 总结移动命令: 无论如何, 这4个命令都不会使光标跑到其它行上去. 即使当前的句子还没有结束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fx 在当前行上查找下一个字符x(光标停留在被搜索字符上). "f"意为"find" Fx 在当前行上查找上一个字符x(光标停留在被搜索字符上) nf(F)x 移动到下(上)第n个x字符的位置 tx 同fx命令, 光标停留在被搜索字符之前的一个字符上. "t"意为"To" Tx 同Fx命令, 光标停留在被搜索字符之前的一个字符上 注: x也可以是一个汉字 重复命令 ( ; 和 , )也可以用于此处 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 移动到指定行 G 把光标定位到最后一行上 #G 把光标定位到由#指定的行上. (对编译时转到出错的地方去很有用。还有更好的方法遍历错误信息列表,可参考:make命令的相关信息) gg 跳转到第一行的快捷的方法。1G效果也是一样,但是敲起来就没那么顺手了 50% 把光标定位在文件的中间,... 如果只是想移动到目前显示在屏幕上的那些行,则下图展示了达到这一目标的几个命令: +---------------------------+ H --> | text sample text | | sample text | | text sample text | | sample text | M --> | text sample text | | sample text | | text sample text | | sample text | L --> | text sample text | +---------------------------+ "H"意为Home, "M"为Middle, "L"为Last. |