vim+mkdir
1 简介 在UNIX系统中,创建和修改配置文件、shell脚本、初始化文件、编写程序都离不开VI。 1 vi属于两个主要的UNIX规范:POSIX和单一UNIX规范。 2 vi编辑器由Bill Joy于1976年创建。 3 vi是一种面向屏幕的编辑器。 4 vi来源于另一个编辑器ex。 5 vim是vi的增强版。 2 使用帮助 学习vi,学会使用联机手册或帮助命令是非常重要的。Unix有两个最重要的文档资料系统:Unix手册和Info(GNU项目的官方文档资料系统)。 常用命令: 1 man vi 2 vi --help 3 info vi 对于较长的说明页,可使用分页程序分页显示。常用的分页程序有:less、more、pg。例如:man cp | less 查找说明书页的其它方法(基于web): 1 使用google搜索:(一定要确保包含双引号) ○ “man vi ” ○ “man pages” vi 2 另外一种基于web的说明书页的方法是xman,xman是一个基于GUI的程序,它充当说明书页浏览器。在命令行启动xman:xman&。 Vi的帮助命令::help 3 模式和命令 3.1 输入模式和命令模式 命令模式[2](command mode):所键入的键都被解释成命令。 输入模式(input mode):键入的任何内容都直接插入到编辑缓冲区中。 当离开输入模式时,使用Esc键切换到命令模式。 了解所处模式的方法: :set showmode 3.2 vi和ex命令 vi和ex是同一个程序的两种不同的表现形式。也就是说可以同时使用vi和ex命令。 vi: ①大多数vi命令都是单字母或双字母的表现形式。 ②vi键入时命令不回显。 ex: ①ex命令比vi命令长。 ②所有的ex命令都以一个:(冒号)开头。键入:后,vi就将光标移动到命令行上(屏幕最底部)。 ③ex命令的每个字符都将回显。 ④ex命令结束,必须按下键盘。 4 启动与编辑vi-vim 4.1编辑一个文件 语法:vi 【-rR】 【file……】 常用命令: 1 vi file 启动vi,编辑指定的文件 2 vi -R file 以只读模式启动vi 3 view file 以只读模式启动vi (vi -R file等同于view file) 4 vim file 启动vim,编辑指定的文件 5 vim -C file 以兼容模式启动vi 4.2编辑多个文件 语法:vi a.txt b.txt c.txt 切换文件: :next 4.3 编辑技巧 编辑技巧: 1 vi +[num] file 打开文件,并将光标置于第n行首 2 vi + file 打开文件,并将光标置于最后一行首 3 vi +/pattern file 打开文件,并将光标置于第一个与pattern匹配的字符串 4 vi +?pattern file 编辑工作从匹配pattern的最后一行开始 5 vi -r file (-r 即recover,恢复) 4.4 写入文件 常用命令: 1 :w 将数据写入到原始文件 2 :w file 将数据写入到指定文件 3 :w >> file 将数据追加到指定文件 4 :r [filename] 在编辑的数据中,读取另一个档案的数据,亦将档案内容加到游标所在行的后面 5 :n1,n2 w [filename] 将n1到n2的内容存储成另一个档案。 4.5 退出文件、停止vi 常用命令: 1 :q 退出文件 2 :q! 不保存数据,强制退出 3 :wq 保存退出文件 4 shift+ZZ 停止vi 5 ZQ 无条件退出 4.6 vi与vim命令行常用选项 -b 以二进制模式编辑文件 -c command 启动后立即运行给定的ex命令 -d 以diff模式运行 -o[num] 启动vim时打开num个窗口 -O[num] 启动vim时打开num个水平排列 -r 恢复模式 -R 于只读模式中编辑文件 -t tag 编辑包含tag的文件,并将光标置于tag位置 -T type 设置可选终端类型 5 插入 输入模式: 操作键 说明 i 在当前光标位置前插入数据 a 在当前光标位置后插入数据 I 在当前行开头处插入数据 A 在当前行末尾处插入数据 o 在当前行下面出入一行 O 在当前行上面插入一行 6 移动和跳转 6.1获取光标当前位置 获取方式:^G 6.2 缓冲区移动 操作键 说明 ^F 向下移动一屏 ^B 向上移动一屏 n^F 向下移动n屏 n^B 向上移动n屏 ^D 向下移动半屏 ^U 向上移动半屏 n^D 向下移动n行 n^U 向上移动n行 ^E 向屏幕顶端多滚动一行 ^L 向屏幕底端多滚动一行 zENTER 将光标所在的行移动到屏幕顶端 z. 将光标所在的行移动到屏幕中间 z- 将光标所在的行移动到屏幕底端 6.3 光标移动 操作键 说明 h 将光标向左移动一个位置 j 将光标向下移动一个位置 k 将光标向上移动一个位置 l 将光标向右移动一个位置 - 将光标移动到上一行的开头 + 将光标移动到下一行的开头 ^ 将光标移动到当前行的第一个非空格/制表符的字符上 数字0 将光标移动到当前行的开始 $ 将光标移动到当前行的末尾 w W 将光标移动到下一个单词的词首(大写字母,略过空格) e E 将光标移动到下一个单词的词尾(大写字母,略过空格) b B 将光标移动到上一个单词的词首(大写字母,略过空格) ) 向前移动到下一个句子 ( 向后移动到上一个句子 { 向前移动到下一个段落 } 向后移动到上一个段落 H 将光标移动到屏幕顶部 M 将光标移动到屏幕中间 L 将光标移动到屏幕的最后一行 fcharacter 单字符搜索移动(f为搜索命令,character为要搜索的字符) Fcharacter 单字符左方向搜索移动 % 已匹配一个括号为目的的移动 说明: 1.命令计数:在移动命令前加数字,如3j,可实现向下移动三行。 语法:ncommand (n为数字,command为移动命令) 2. 规律:一个命令的大写字母形式会做同样的事情,但是方向相反。 6.4 行号跳转 显示行号: :set number 关闭行号: :set nonumber 命令 说明 nG 、 :n 跳转到第n行 1G 、 gg 、 :1 跳转到编辑缓冲区的第一行 G 、 :$ 跳转到编辑缓冲区最后一行 附加: 另一个移动到某行的办法是:在命令 % 前加一个命令计数,如 50% 会把光标定位在文件中间。 6.5 跳转到前一位置 返回前一位置: a) ``(两个反引号) b) ‘’(两个单引号) 6.6 使用名称标示任意行,进行跳转 用不可见的名称标识任意行,当需要时使用此名称跳转到这一行。 可以键入m标示这一行,后跟一个字母,这个字母就是这一行的名称。例如:用”b“标示这一行,可以键入mb。为了跳转到这一行,可以键入一个反引号或单引号,后面跟这一行的名称。如:`b 或 ’b 7 搜索 7.1搜索常用命令 向前搜索: / 向后搜索: ? 常用命令: 1 / 向前重复搜索 2 ? 向后重复搜索 3 /regex 向前搜索指定的正则表达式 4 ?regex 向后搜索指定的正则表达式 5 n 重复上一条/或?命令,搜索方向相同 6 N 重复上一条/或?命令,搜索方向相反 附: 命令历史记录:用上下箭头来查找用过的搜索 7.2查找字符串便捷方式 *命令 : 将光标定位于字符串,按下*键,vi将会取当前光标所在的字符串并将它作用目标字符串进行搜索。 #命令: 与*相反。 %:搜索与当前花括号、圆括号、方括号成对的符号。 7.3 查找整个字符串 方法: 使用\< \>进行匹配。 例子:/\<word\> 8 文本改动 8.1替换之vi命令 r:精确替换一个字符(不进入输入模式)。 R:替换多个字符(以覆盖方式替换)。(先将光标移动到希望开始替换的位置,然后输入R。切换到输入模式,随后键入的每个字符都将替换当前行上的一个字符。) s:允许使用多个字符替换一个单个的字符(以插入方式替换)。 C:允许替换从当前光标位置到本行末尾的所有字符。 S 或 cc:以插入方式替换当前整行。 cmove:以插入方式从当前光标处替换到move所给出的位置处。 8.2替换之ex命令_常用方法 ex命令: 语法::s/pattern/replace/ 其中,pattern是替换的模式,replace是替换的文本。 使用方法总结: 1 :s/pattern/replace/ 替换当前行 2 s/pattern/replace/g 替换当前行所有 3 :lines/pattern/raplace/ 替换指定行 4 :line,lines/pattern/replace/ 替换指定范围内的行 5 :%s/pattern/replace/ 替换所有行 6 :.,$s/pattern/replace/g 从当前行末尾至编辑缓冲区的末尾进行相同的替换 7 :line,.s/pattern/replace/g 从编辑缓冲区的指定位置到当前行进行相同的替换 说明 : 1 所有的ex命令都以:开头。 2 :s只替换当前行上该模式的第一个匹配项。 3 为了替换所有匹配项,需在该命令的末尾键入字母g。例如::s/UNIX/linux/g 4 替换前进行确认,可在命令末尾添加c。例如::s/UNIX/linux/cg 5 .点号代表当前行。$代表缓冲区最后一行。%代表编辑缓冲区内所有的行。 8.3 交换字符 交换两个字符的位置: xp 交换两行的位置:ddp 调换两个单词(光标开始处于第一个单词的左边):deep 9 删除 9.1 删除命令 vi命令 操作键 x 删除当前光标处的字符 X 删除光标左边的字符 D 删除从当前光标到本行末尾的字符 J 删除两行之间的换行符 (亦可用于合并两行) dmove 删除从当前光标到move所给位置的字符 dd 删除当前行 ex命令 :lined 删除指定行 :line,lined 删除指定范围内的行 9.2 常用的删除组合命令 说明:操作符命令+位移命令 1 nx 删除多个字符(n为删除的字符个数) 2 dw 删除1个单词 3 d10w 删除10个单词 4 d10W 删除10个单词,忽略标点符号。 5 db 向后删除一个单词 6 d2) 删除两个句子 7 d5} 删除5个段落 8 dG 或 :.,$d 删除当前行到编辑缓冲区末尾的所有行 9 dgg 或 d1G 或:1,.d 删除当前行到编辑缓冲区开头的所有行 10 :1,$d 或 :%f 删除整个编辑缓冲区 11 d/word 删除从光标所在位置到单词word的所有文本 12 .,/word/d 删除从光标所在位置到单词word的所有文本 13 df x 删除至当前行中x所在的位置 14 d^ 删除至该行的开始处 9.3插入模式中删除操作 ^U 删除当前行 ^H 删除前一个字符 ^W 删除前一个词 9.4 撤销或重复改变 vi命令: 1 u 撤销上一命令对编辑缓冲区的修改 2 U 恢复当前行(即一次撤销对当前行的全部操作) 3 .点号 重复上一命令对编辑缓冲区的修改 9.5 恢复删除 语法:"1p(P) 说明: 1 1为缓冲区的编号。 2 p在当前行的下面插入,P在当前行的上面插入。 9.6 复制上一次删除 命令 说明 p 复制上一次删除的内容,插入到光标的后面/下面 P 复制上一次删除的内容,插入到光标的前面/上面 10 复制 10.1 接出(复制单词、句子、段落) 当在不删除文本的情况下将文本复制到无名缓冲区时,称为接出(yank)。(因此将命令命名为y、yy、Y)。 步骤: 1 使用y、yy、Y将文本由编辑缓冲区复制到无名缓冲区中,但不删除原始文本。 2 将光标移动到希望插入文本的位置。 3 使用P或p命令执行插入。 常用命令 操作键 yw 接出一个单词 y10w 接出10个单词 y10W 接出10个单词,忽略标点符号 yb 向后接出一个单词 y2) 接出两个句子 y2} 接出5个段落 yy 接出一行 10yy 接出10行 y$ 接出从当前字符到本行末尾的的文本 y0 接出从当前字符到这一行开头之间的文本 10.2 复制与移动行 语法: :x,ycoz :x,ymz 说明: 1 x,y,z都是行号。x,y是源行,z是目标行号。 2 源行x,y被复制或移动,插入到z行的下面。 3 :m删除原始行,:co不删除原始行。 例子: 1 :2co4 复制第2行,插入到第4行下面 2 :2,4co8 复制第2行到第4行,插入到第8行下面 3 :2m4 移动第2行,插入到第4行下面 4 :2,4m8 移动第2行到第4行,插入到第8行下面。 11 使用缩写 要为经常使用的单词或表达式创建缩写,可使用:ab命令。 1 创建缩写,语法::ab [ short long ] 2 删除缩写,语法: :una short 12 命令补全与文本补全 命令补全:Tab 关键字补全:^N ^P 13 shell命令 14.1 执行shell命令 1 :!command 暂停vi,执行制定的shell命令 2 :!! pause vi 执行上一条shell命令 3 :sh 暂停vi,启动一个新的shell 4 :!csh 暂停vi,启动一个新的c-shell 14.2 使用shell命令处理数据 1 n!! command 对n行数据执行command 2 !move command 对当前光标至move所指定的位置的数据执行command 3 !move fmt 格式化当前光标到move所指定的行 15 显示与设置选项 15.1 显示选项 1 语法: :set [option] 2 显示所有选项的值: :set all 3 显示一个选项的值: :set option? 15.2 设置选项 语法::set [no]option..... :set option[=value]... 15.3常用设置命令 设置行号显示与否: 简写 :set nu / :set no nu 设置自动缩进: 简写 :set ai / :set no ai 设置缩进宽度: 简写 :set sw=4 设置大小写忽略与否: 简写 :set ic / :set no ic 16 初始化文件与配置文件 16.1初始化文件 vi的初始化文件:.exrc vim的初始化文件:vimrc 16.2配置文件 linux配置文件: /usr/share/vim/vimrc 查找Windows配置文件: scriptnames 17 在线资料 1 vim官网:http://www.vim.org/ 2 FreeBSD vi:http://www.dc.fi.udc.es/~afyanez/info-vi/man-page.html 3 vim中文文档:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html 4 vim作者个人网站:http://www.moolenaar.net/ 5 vim手册中文版:http://sourceforge.net/projects/vimcdoc/ 6 vi-ex:http://ex-vi.sourceforge.net/ 7 vi:http://thomer.com/vi/vi.html 8 非常好vim学习网站:http://www.openvim.com/ 9 图形化vi-vim小抄:http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html 10 vim配置文件:http://amix.dk/vim/vimrc.html 11 史上最强vim配置文件:http://blog.csdn.net/redguardtoo/article/details/1172136 12 vi正则表达式:http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml 13 神奇的vi:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip15/ 14 vim资料:http://wiki.hotoo.me/Vim.html 15 vi-vim book:http://search.oreilly.com/?q=vi+vim&x=-873&y=-56 16 OReilly:http://books.google.com/books?id=J5nKVVg5YHAC&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=UcVRUeCPKs-viQew54CwDQ&ved=0CC8Q6AEwAA#v=onepage&q&f=false 17 OReilly:http://books.google.com/books?id=YQXfIbb0cJ8C&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=s8VRUc2VO8SViAeB9YGYBA&ved=0CDoQ6AEwAQ
======================================MKDIR==============================================
1.$ mkdir {a..z} 创建目录a到z
2.$ mkdir -p /home/user/doc{1..10} 在doc目录下创建目录1,2,3,4,5,6,7,8,9,10
3.$ mkdir a{0..9}{a..j} 创建100个目录,a0a……a9j
4.$ mkdir Documents/{ doc/{doc_1,doc_2} , video,music,city/Beijing }
在Documents目录下创建目录doc,video,music,city,并在doc目录下创建目录doc_1,doc_2,且在city目录下创建目录Beijing
5.$ mkdir $(date +%F) 创建目录(打印目录名为当前完整的日期格式,即如%Y-%m-%d)
6.$ mkdir $(date +%T) 创建目录(打印目录名为当前时间,即如14:14:14,%T等同%H:%M:%S)
7.$ mkdir Dir; cd $_ 创建一个目录并进入目录中
================================文件操作===================
命令1:查看文件内容
"cat 文件名" 查看文件内容,页面停留在最后。
"more 文件名" 分页查看文件内容
回车 下一行
空格 翻页
q 退出
"head 文件名" 查看文件内容的前几行,默认前10行,如果想制定看前n行,加选项-n
例如 "head -5" 查看前五行
tail 和head相反,"tail -5" 最后五行。
tail -f 动态显示最后十行,例如查看日志文件
命令2:创建软连接
"ln -s xxx 路径1" 在路径1创建xxx的软连接
特点:
1.文件类型 l
2.相当于windows的快捷方式
命令3:创建硬链接
"ln xxx 路径1" 在路径1创建xxx的软连接
特点:
1.文件类型 -
2.相遇于拷贝,但是可以同步更新。
============================================================