版权声明 :本文章参考了《鸟哥的Linux私房菜》 、《Linux命令手册》 、《Linux命令大全》 以及《Linux man pages》 。未经作者允许,严禁用于商业出版 ,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!
1 vim的三种模式
普通模式 ——打开文件后就直接进入普通模式,可用『上下左右按键』来移动光标,你可以使用『删除字符』或『删除整列』来处理文件内容, 也可以使用复制、粘贴来处理你的文件数据。还可以『搜索替换』。编辑模式 ——在普通模式中按下『i, I, o, O, a, A, r, R』等任何一个之后就进入编辑模式。在编辑模式中按『Esc』键返回普通模式。命令模式 ——在普通模式中,按下『:』,就进入命令模式。在命令模式中按『Esc』键返回普通模式。
2 按键与命令说明
2.1 移动光标
按键 或 命令 作用 备注 [n]h 或 [n]← 光标向左移动n列,缺省为1 不能换行 [n]j 或 [n]↓ 光标向下移动n行,缺省为1 [n]k 或 [n]↑ 光标向上移动n行,缺省为1 [n]l 或 [n]→ 光标向右移动n列,缺省为1 不能换行 CTRL + f 向前翻页,相当于Page Down CTRL + b 向后翻页,相当于Page Up CTRL + d 向前翻半页 CTRL + u 向后翻半页 CTRL + e 编辑窗口中的文件内容整体上移一行。 CTRL + y 编辑窗口中的文件内容整体下移一行。 [n]- 光标向上移动n行并在行首,缺省为1 [n]+ 或 [n]ENTER 光标向下移动n行并在行首,缺省为1 n + SPACE 向后移动n个字符,缺省为1 能换行 ^ 或 HOME 或 0 移动到行首字符 $ 或 END 移动到行尾字符 H 光标移动到当前窗口第一行行首 M 光标移动到当前窗口中间行行首 L 光标移动到当前窗口最后一行行首 G 移动到文件的最后一行行首 nG 或 :n 光标移动到n行行首 gg 光标移动到文件的第一行行首 [n]z + ENTER 把第n行移动到屏幕顶部,缺省为当前行 [n]z. 把第n行移动到屏幕中间,缺省为当前行 [n]z- 把第n行移动到屏幕底部,缺省为当前行 zt 把当前行移动到屏幕第一行 zz 把当前行移动到屏幕中间 zb 把当前行移动到屏幕最后一行 w 将光标右移到下一个词的词首 b 将光标左移到上一个字的词首 e 把光标移至当前词(或下一个词)的词尾 W 同w,只是以空白符作为字的分隔符 B 同b,只是以空白符作为字的分隔符 E 同e,只是以空白符作为字的分隔符 fx 往右移动到 x 字符上 Fx 往左移动到 x 字符上 tx Tx 往左移动到 x 字符后 ; 分号,配合 fx Fx tx Tx 使用,重复一次 , 逗号,配合 fx Fx tx Tx 使用,反方向重复一次
2.2 查找与替换
按键 或 命令 作用 *
向后搜索当前单词 #
向前搜索当前单词 /[OPTION]regex_pattern[/ige]
向后搜索,vim真这个表达式请看第3节。i,忽略大小写;e,不显示错误。 ?[OPTION]regex_pattern[/ige]
向前搜索,g全局替换,否则只替换每行的第一个匹配项; n
下一个 N
上一个 :s/[OPTION]pattern/[OPTION]str[/ingce]
用str替换当前行的匹配项。c,询问是否替换。n不替换而显示匹配数量 :n1,n2s/[OPTION]regex_pattern/[OPTION]str[/ignce]
用str替换n1-n2行匹配pattern的字符串。str中可以引用匹配结果 :n1,[$]s/[OPTION]regex_pattern/[OPTION]str[/ignce]
用str替换n1行到最后一行匹配pattern的字符串,str中可以引用匹配结果 :,n2s/[OPTION]regex_pattern/[OPTION]str[/ignce]
用str第1行到第n2行匹配pattern的字符串。str中可以引用匹配结果 :%s/[OPTION]regex_pattern/[OPTION]str[/ignce]
用str替换所有匹配pattern的字符串。str中可以引用匹配结果 rx
用x替换当前光标所在字符 R
将光标所在字符及后续字符替换为输入的字符,直到按ESC键 匹配模式选项 \v
要在查找或替换中完全使用正则表达式 \V
表示完全不使用正则表达式,但斜杠和反斜杠还是需要转义 替换模式选项 \l 在替换字符中表示将分组第一个转换成小写 \L 在替换字符中表示将分组转换成小写 \u 在替换字符中表示将分组第一个转换成大写 \U 在替换字符中表示将分组转换成大写
2.3 插入、添加
按键 或 命令 作用 a 从光标后面开始添加文本 A 从光标所在行的末尾开始添加文本 i 从光标前面开始插入文本 I 从光标所在行的开始处插入文本 o 在目前光标所在的下一列处插入新的一列 O 在目前光标所在处的上一列插入新的一列
2.4 剪切、复制与粘贴
按键 或 命令 作用 [n]x 剪切光标所在字符及其右边n-1个字符,缺省为1 [n]X 剪切光标左边的n个字符,缺省为1 [n]dd 剪切从光标行及后面n-1行,缺省为1 dnG 剪切第n行到光标所在行 dG 剪切光标所在到最后一行的所有数据 d$ 或 D 删除光标所在处到该行的最后一个字符 d0 剪切光标所在处到该行的第一个字符 [n]yy 复制从光标行及后面n-1行,缺省为1 ynG 复制第n行到光标所在行 yG 复制光标所在到最后一行的所有数据 y$ 或 D 复制光标所在处到该行的最后一个字符 y0 复制光标所在处到该行的第一个字符 p 小写,粘贴到光标所在行之后 P 大写,粘贴到光标所在行之前
2.5 撤销与重做
2.6 块操作
按键 或 命令 作用 v 字符选择,会将光标经过的地方反白选择 V 行选择,会将光标经过的行反白选择 CTRL + v 区块选择,可以用长方形的方式选择 y 将反白的地方复制 d 将反白的地方剪切 p 将刚刚复制的区块,粘贴到光标位置 P 大写,将刚刚复制的区块,粘贴到光标之前
2.7 保存与退出
按键 或 命令 作用 :q 在未修改文档的情况下退出vim :q! 放弃文档的修改,强行退出 :w 文档存盘 :wq 文档存盘退出 :x 存盘退出 ZZ 若文件未改动,则离开,若文件已改动,则储存后离开! :w [filename] 将编辑的数据储存成另一个文件(类似另存新档) :r [filename] 在当前行之后,读入另一个文件 :n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个文件。 :! command 调用shell执行命令command
2.8 其它操作
按键 或 命令 作用 . 重复前一个动作 :help command 查看命令command的帮助提示 :%!xxd 以十六进制模式查看 :%!xxd –r 返回文本模式 q: 历史命令 CTRL+s 在编辑过程中使 vim 处于僵死状态, CTRL+q 恢复编辑状态。 vim +n file 打开文件时光标定位到file的第 n 行 vim +/string file 打开文件时光标定位到第一个string 处 gg=G 可以自动对齐
2.9 同时移动多行
按键 或 命令 作用 >>或<< 单行右移或左移 n> 或 n < visual模式下选中内容后,右移或左移n次, :n,m>[>…] 或 :n,m<[<…] 行n到行m左移或右移一次。。。
2.10 多窗口
按键 或 命令 作用 :new file 再打开一个 vim,是横向的 :vnew file 再打开一个 vim,是纵向的 :sp [file] 新建窗口。横向的 :vsp [file] 新建窗口。纵向的 CTRL+w,CTRL+w 两个窗口之间进行切换 CTRL+w+j|k|k|↓ |↑ 切换到上一个或者下一个窗口
2.11 补全
按键 或 命令 作用 ctrl+x,ctrl+n 通过目前正在编辑的这个『文件的内容』作为关键词,予以补齐 ctrl+x,ctrl+f 以当前目录内的『文件名』作为关键词,予以补齐 ctrl+x,ctrl+o 以扩展名作为语法补充,以 vim 内建的关键词,予以补齐
3 vim中的正则表达式
vim中字符集用[[:class:]]表示 vim正则表达式与基本正则表达PREs式基本一致。请参考《正则表达式详解》 。差异如下表:
描述 vim PREs 匹配[a-z] \l
不支持 匹配[^a-z] \L
不支持 匹配[A-Z] \u
不支持 匹配[^A-Z] \U
不支持 匹配 / 字符 需要转义 /
匹配 空格 字符 需要转义 不需要转义 匹配0-1个 \?
或\=
?
匹配n-m个 \{n,m}
或\{n,m\}
{n,m}
匹配n个 \{n}
或\{n\}
{n}
匹配至少n个 \{n,}
或\{n,\}
{n,}
匹配至多m个 \{,m}
或\{,m\}
{,m}
匹配分组,并存放匹配结果,可用\n来引用。 \(\)
()
匹配分组,不存放匹配结果,不可用\n来引用。 \%(expr\)
(?:expr)
非贪婪 \{-n,m}
限定符?
匹配时包含换行符 \_元字符
不支持 正向肯定预察 (exp)\@=
(?=exp)
正向否定预察 (exp)\@!
(?!exp)
逆向肯定预察 \@<=(exp)
(?<=exp)
逆向否定预察 \@<!(exp)
(?<!exp)
固化分组 (\@>expr)
(?>expr)
占有量词 不支持
限定符+
4 存档与恢复
vim打开文件后会在当前目录自动建立一个记录操作的文件.filename.swp
的文件。当多个人打开同一个文件或vim非正常退出时,会出现提示:
只读打开,O 正常打开,E 恢复,R 删除,D 退出,Q 终止,A
5 环境配置
命令 作用 :set 显示所有不同于缺省值的选项 :set all 显示除了终端设置以外的所有选项 set termcap 显示所有的终端选项。注意在GUI里,不会显示键码,因为它们是内部生成的,无法改变。而且 GUI里即使修改终端代码也没用 :set option? 显示 option的值。 :set option bool选项:置位,打开。数值选项:显示其值。字符串选项:显示其值 :set nooption 切换选项: 复位,关闭。 :set option! 切换选项,反转其值,Vi 无此功能 :set option& 复位选项为其缺省值。 :set option&vi 复位选项为 Vi 的缺省值。Vi 无此功能} :set option&vim 复位选项为 Vim 的缺省值。Vi 无此功能} :set all& 设置所有除了终端设置的选项为其缺省值。 :set option=value 设置字符串或数值选项的值为 value :set option:value 设置字符串或数值选项的值为 value。 :set option+=value 把value加到数值选项里,或者附加到字符串选项之后。 如果选项是逗号分隔的列表,除非原来的值为空,会加上一个逗号。如果选项是标志位的列表,删除多余的标志位。如果加入已经存在的标志位,选项值不变 :set option^=value 把value乘到数值选项里,或者附加到字符串选项之前。如果选项是逗号分隔的列表,除非原来的值为空,会加上一个逗号。 :set option-=value 把value从数值选项里减去,或者从字符串选项里删除,如果该值原来存在的话。如果不存在,不会有错误或者警告。如果选项是逗号分隔的列表,除非新值为空,删除一个逗号。如果选项是标志位的列表,value 必须和选项里出现的顺序完全相同。一个一个地分别删除标志位可以解决这个问题。 verbose bool选项用于查看当前操作的相关信息 常用选项或参数 http://blog.csdn.net/liao20081228/article/details/78808126#t14
6 DOS与Linux转换——dos2unix
、unix2dos
windows换行符号为^M$也就是CR和LF,而Linux下的换行符为$,也就是LF。
命令 :dos2unix [-kn] file unix2dos [-kn] file 描述 :DOS与Linux转换.
7 语言编码转换——iconv
命令 :iconv -f 原编码 -t 新编码 filename [-o newfile] 描述 :转变语言编码方式
版权声明 :本文章参考了《鸟哥的Linux私房菜》 、《Linux命令手册》 、《Linux命令大全》 以及《Linux man pages》 。未经作者允许,严禁用于商业出版 ,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!