GMT ,UTC, and PDT

GMT

GMT 是 Greenwich Mean Time 的缩写,译为中文为“格林威治标准时间”或“格林尼治标准时间”,直译的话,可译为“格林威治平时”或“格林尼治平时”。这里的格林威治位于英国伦敦东南方向的泰晤士河畔,美国也有个格林威治镇,不过与时间没关系。

UTC

UTC 是 Coordinated Universal Time 的缩写,译为中文为“世界标准时间”,直译的话,可译为“协调通用时间”或“协调世界时间”。目前来说也就是指 GMT 时间。为什么说目前就是指 GMT 时间呢?因为本初子午线(子午线即经线,本初子午线即 0 度经线)其实穿过的是沙特阿拉伯西边的麦加,而不是英国的格林威治。当时英国皇家学会暂时确定格林威治为本初子午线的穿过点﹐加之英国正是兴旺发达时期,全世界就将错就错,用到现在。说不定哪天改为麦加时间为标准时间也不是没有可能。所以我们一般使用 UTC,而不是 GMT。

PDT

PDT 是 Pacific Daylight Time 的缩写,译为中文为“太平洋夏令时间”,比 UTC 时间晚 7 小时。Google 曾在其 AdSense 中提到“在 09-6-13,我们的工程师会在 PDT 大约 上午10:00 到 下午2:00 对网站进行维护。”

其实除了 PDT 时间,北美地区还有很多时间:

NST – Newfoundland Standard Time 纽芬兰标准时间
NDT – Newfoundland Daylight Time 纽芬兰夏令时间
AST – Atlantic Standard Time 大西洋标准时间
ADT – Atlantic Daylight Time 大西洋夏令时间
EST – Eastern Standard Time 东部标准时间
EDT – Eastern Daylight Time 东部夏令时间
CST – Central Standard Time 中部标准时间
CDT – Central Daylight Time 中部夏令时间
MST – Mountain Standard Time 山地标准时间
MDT – Mountain Daylight Time 山地夏令时间
PST – Pacific Standard Time 太平洋标准时间
PDT – Pacific Daylight Time 太平洋夏令时间
AKST – Alaska Standard Time 阿拉斯加标准时间
AKDT – Alaska Daylight Time 阿拉斯加夏令时间
HAST – Hawaii-Aleutian Standard Time 夏威夷-阿留申标准时间
HADT – Hawaii-Aleutian Daylight Time 夏威夷-阿留申夏令时间
夏令时

Daylight Saving Time 或 Daylight Time。

最初构想是美国的本杰明·富兰克林,这人很厉害,既是科学家,又是政治家、文学家、航海家,为此头像被印在一百元美钞上,他曾放风筝上天吸引雷电发明避雷针,美国第一位驻外大使(法国)。在驻法期间,因不习惯法国人晚起晚睡的习惯,故建议法国人早起早睡,以节约蜡烛。

后来英国有个建筑师正式提出夏令时,不过由于没名气,英国议会没有采纳。

第一个真正实行夏令时的是德国,后来是英国、法国。

目前全世界有近110个国家每年要实行夏令时。

美国曾多次实行和取消夏令时,现在美国是否实行夏令时完全由各州自行决定,不过绝大多数是实行了的。

中国在 1986 年到 1991 年之间曾实行夏令时,还记得那时候读书老师就叫我们回家给家长说把钟调快一个钟头、调慢一个钟头。

夏令时对节约能源有一定帮助,但对赤道附近的国家来说意义不大,而且一年调来调去容易把事情搞混乱,特别是中国本来只实行一个时区(北京时间),而中国东西跨度很大,实行夏令时,作息时差就太多。

与夏令时相对应,有些国家地区实行冬令时。

lfs

http://yazku.blog.163.com/blog/static/12355625520103260561361/
http://www.linuxdiyf.com/bbs/thread-62154-1-1.html
http://tech.techweb.com.cn/thread-220686-1-1.html
http://www.linuxidc.com/Linux/2007-05/3787.htm
http://my.opera.com/419/blog/chroot-livecd-lfs
http://www.diybl.com/course/6_system/linux/Linuxjs/20100520/203030.html
http://my.opera.com/419/blog/chroot-livecd-lfs
http://linux.sheup.com/tag.php?tag=debian

按照人名的汉语拼音的顺序排序

#!/bin/ksh

  #scriptname:sortname

  #write by:bjgirl

  #date:2003/09/11

  name=$(

  for i in $(awk -F| '{print $2}' datafile)

  do

  echo -n "$i=";echo $i|od -c|awk '{print $2}'

  done|tr -s 'n'|sort -n -t"=" -k 2|awk -F= '{print $1}')

  for j in $name

  do

  sed -n /${j}/p datafile

  done

  [/code:1:11157874a8]

  结果

  [code:1:11157874a8]

  $sortname

  1231017911|黄伟|1231017911|2003/07/07|2004/07/03|200000.0|0.0|6.6375

  1231021548|黄伟希|1231021548|2001/04/18|2001/10/18|20000.0|10000.0|6.975

  1231021548|黄伟希|1231021548|2001/04/18|2001/10/18|20000.0|10000.0|6.975

  1231054277|李八|1231054277|2002/04/18|2002/12/18|50000.0|0.0|6.6375

  1231024763|李四|1231024763|2000/08/11|2001/08/11|10000.0|0.0|7.3125

  1231053510|孙七|1231053510|2002/02/08|2002/08/08|50000.0|0.0|6.975

  1231005010|苏义|1231005010|2003/06/25|2003/08/25|200000.0|0.0|6.3

  1231017864|苏义强|1231017864|2001/04/29|2001/08/30|10000.0|0.0|6.975

  1231030010|苏义红|1231030010|2001/12/27|2002/12/26|60000.0|38000.0|7.3125

  1231042038|苏义红|1231042038|2003/02/27|2003/12/20|40000.0|0.0|6.6375

  1231017864|苏义强|1231017864|2001/04/29|2001/08/30|10000.0|0.0|6.975

  1231030010|苏义红|1231030010|2001/12/27|2002/12/26|60000.0|38000.0|7.3125

  1231042038|苏义红|1231042038|2003/02/27|2003/12/20|40000.0|0.0|6.6375

  1231030010|苏义红|1231030010|2001/12/27|2002/12/26|60000.0|38000.0|7.3125
原理很简单:把汉字转换成ASCII码后再排序

from http://doc.linuxpk.com/3814.html

比较两个目录的异同

可以用:
diff -qr dir1/ dir2/
rsync -vnr dir1/ dir2/
但是很慢。因为文件也被比较了。给rsync加上“–ignore-existing”的选项要好很多。
如果只是想比较目录结构,可以
ls -R directory1 > directory1.txt
ls -R directory2 > directory2.txt
diff –side-by-side –suppress-common-lines directory1.txt directory2.txt
如果给ls加上“-1s”的选项(注意:是1,2,3的1,不是l,m,n的l),还可以比较文件的大小。

环境变量PATH

第一种,在自己的家目录

vim .bashrc
PATH=”/home/evan/python2.7/bin:$PATH”

export PATH=”$PATH:/home/evan/bin/:/home/evan/shelltest/”

第二种

/etc/profile

 

让它生效

source .bashrc

 

#export PATH=$PATH:/opt/    这个是临时的而已

 

 

cron的程序有输出内容造成的/var/spool/clientmqueue/目录下存在大量文件

问题现象:
linux操作系统中的/var/spool/clientmqueue/目录下存在大量文件。
原因分析:系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件;
解决办法: 1、 将crontab里面的命令后面加上> /dev/null 2>&1
2、知识点:
2>:重定向错误。
2>&1:把错误重定向到输出要送到的地方。即把上述命令的执行结果重定向到/dev/null,即抛弃,同时,把产生的错误也抛弃。
3、具体代码:
crontab -e
*/2 * * * * //scripts/update > /dev/null 2>&1

4、清除/var/spool/clientmqueue/目录下的文件:
# cd /var/spool/clientmqueue
# rm -rf *
如果文件太多,占用空间太大,用上面命令删除慢的话,就执行下面的命令:
/usr/bin/find /var/spool/clientmqueue/ -type f -exec rm {} ;
# cd /var/spool/clientmqueue
# ls | xargs rm -f

#ls *.log |xargs rm -f
#如果出现-bash: /bin/ls: Argument list too long,就用下面这个吧

ls |xargs rm -fr

或者定期删除clientmqueue目录下的邮件,如下:
#for rm /var/spool/clientmqueue/*
00 03 * * * ls /var/spool/clientmqueue | xargs rm -f > /dev/null 2>&1

http://blog.csdn.net/wyzxg/article/details/7513810

/var/log目录下的20个Linux日志文件功能详解

如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容。在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决。
以下介绍的是20个位于/var/log/ 目录之下的日志文件。其中一些只有特定版本采用,如dpkg.log只能在基于Debian的系统中看到。
/var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
/var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log — 包含系统启动时的日志。
/var/log/daemon.log — 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log — 记录所有等级用户信息的日志。
/var/log/Xorg.x.log — 来自X的日志信息。
/var/log/alternatives.log – 更新替代信息都记录在这个文件中。
/var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups — 涉及所有打印信息的日志。
/var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
/var/log/yum.log — 包含使用yum安装的软件包信息。
/var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
/var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:
/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ — 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon储存的信息。
/var/log/samba/ – 包含由samba存储的信息。
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ – 用于守护进程安全服务。
除了手动存档和清除这些日志文件以外,还可以使用logrotate在文件达到一定大小后自动删除。可以尝试用vi,tail,grep和less等命令查看这些日志文件。

/var/log目录下的20个Linux日志文件功能详解

mysql中kill掉多个进程进程

第一取得 id
mysql -uroot -p -h10.1.27.16 -P3306 -e 'show processlist;'|grep -E 'select|SELECT'|awk '{print $1}' > id.txt

第二 loop它
#!/bin/bash
for loop in `cat db.id`
do
mysql -u root -p'password' -h 1.1.1.1 -P 3306 -e 'kill $loop;'
done

多谢 tcj哥 的脚本

这面的文章 也不错
http://hi.baidu.com/leechl/blog/item/e517fcb0051de65c09230285.html
http://my.oschina.net/willSoft/blog/34901

vim 可视模式

可视模式让你可以选择文件的一部分内容,以便作比如删除,复制等工作。

进入可视模式 ##这几个真是好用呀

v

用v命令进入可视模式。当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。

三种可视模式

v

一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。

V

一行一行地选。从按下V的那行起,一直到光标所移动到的行之间的所有行都被选中。

Ctrl-v

它选中屏幕上的一个矩形区域。以按下Ctrl-v的位置为一个角,光标所在位置为它的对角。

离开可视模式

按下就会离开可视模式。

可视模式下的编辑

在可视模式下删除文本

d

删除所选中的部分。

D

删除所选中部分所在的行。即使没有把一行都选中,也把一行都删除。

复制

v

复制选中的部分。

D

复制所选中部分所在行。即使没有把一行都选中,也把一行都复制。

更改模式

可以随时在可视模式中的三种之间切换,只需按进入想要切换到的模式的命令即可。

更改文本

c

删除所选中的部分并切换到输入模式。

C

删除所选中的部分所在的行并切换到输入模式。

合并行

当选中想合并在一起的行以后,按下

J(大写)

就可以了。

程序员的命令

>

所选中的部分都缩进一个tab。

在所选中的部分删除一个tab的缩进。

=

自动排列所选中的内容。

查看man

K

命令查看关键字的man page,在可视模式它会以选中的文本为关键字。

可视块模式

通过Ctrl-v进入的模式为可视块模式,它会选中一个矩形区域。

插入内容

I字符串

会在每一行所选中内容的开始前添加”字符串”

改变文本

c字符串

会把选中的内空删除并进入输入模式。你只需要在选中的第一行输入一个字符串,当按下后所有行的选中部分都会和第一行一样。这里的字符串中不能包含换行符,如果包含了换行符的话,它就不会这么神奇,就会根普通模式下的c一样了。

C(大写)

会直接删除到行尾,其它与c一样。

A(大写)

会在选中的块后面添加文本。它们是对齐的。

如果要在选中的块紧接每行末尾添加内容,则需用$来指定选择到行尾,而不是简单地用光标。

替换内容

r

用来把选中的内容替换成同一个字符。

缩进

>

>将选中的块缩进一个shiftwidth

固定链接 留言

Vim简明教程5:窗口

九月 3, 2006 @ 9:17 am · 归类于 Vim

打开一个新窗口

最简单的打开新窗口的方法是

:split

它把一个窗口分成两个,光标留在上面的那个窗口中。

通过

Ctrl-w+方向键

来在窗口间切换

比如

Ctrl-ww 或 Ctrl-w Ctrl-w

切换到下一个窗口;

Ctrl-wj 和 Ctrl-wk

分别切换到下一个窗口和上一个窗口。

要关闭窗口,用

:q 或 ZZ 或 Ctrl-wc

找开一个新窗口并在其中打开一个文件

:split 文件名

也可以给split命令分配一个初始命令,也就是说执行完split接着要做的

:split +命令 文件名

比如

:split +/printf three.c

命令会把当前窗口分成两个然后在上面的窗口中查找printf这个字符串。

控制窗口大小

如果给split命令指定一个参数,则表示新找开窗口的高度

比如

:3split alpha.c

打开一个高度为3的窗口并在其中打开alpha.c

:new命令

:new

命令用起来就跟split差不多,只有一点不同:new命令会在新窗口中新建一个文件,而split只是在新窗口中打开原窗口中的内容。

分割并查看(Split and View)

:sview

命令新建一个窗口并且其中的内容是只读的。

改变窗口大小

行数Ctrl-w+

把当前窗口高度增加”行数”行(如不指定行数,默认为1)

行数Ctrl-w-

把当前窗口高度减少”行数”行(如不指定行数,默认为1)

Ctrl-w=

让所有窗口一样高

行数Ctrl-w_

把当前窗口的高度设为”行数“,如不指定则把它最大化。

缓冲

Vim用缓冲来代表一个文件。当你在编缉一个文件时,只是在编缉它的缓冲。当你完成编辑保存时,Vim把缓冲中的内容保存进文件。当然,事情并不是 这么简单。在Vim中设置的标记之类的也保存在缓冲中。你可以同时拥有多个缓冲,当你编辑多个文件时就是这样。当你想要一个Vim窗口,并且想编辑多个文 件时,把这个窗口最大化是不管用的,因为这不是一个窗口,其它的窗口还是能看得见的。此时你可以把不编辑的缓冲隐藏(hide),用命令

:hide

一个缓冲有三种可能的状态:

活动:显示在屏幕上的窗口

隐藏:没有显示在屏幕上的在编辑的缓冲

不活动:缓冲没有在编辑,但是保存着它的信息

第三种状态需要多解释一下,当你编辑另一个文件时,当前文件的内容就没有用了。Vim就关掉它。但是它的一些其它信息可能还有用。(这一部分比较混乱,原文说得也不是很清楚,不懂也无所谓)

要查看缓冲的列表,用

:buffers

命令。输出的第一列是缓冲编号,第二列是状态,第三列是与缓冲对应的文件。

状态共且以下几种:

– 不活动的缓冲
h 隐藏的缓冲
% 当前缓冲
# 其它缓冲
+ 文件被编辑而未保存

选择一个缓冲

:buffer 缓冲编号

如果你不知道缓冲的编号,可以用

:buffer 文件名

下面的命令分割窗品并编辑指定的缓冲

:sbuffer 缓冲编号

:sbuffer 文件名

还有很多关于缓冲的命令:

:bnext 去下一个缓冲
:count bnext 执行count次去下一个缓冲
:count sbnext 先分割窗口,然后执行:count bnext
:count bprevious 去上一个缓冲。如果指定了count,则执行count次
:count sbprevious 先分割窗口,然后执行:count bprevious
:count bNext 同:count bprevious
:count sbNext 同:count sbprevious
:blast 去最后一个缓冲
:sblast 先分割窗口再执行:blast
:brewind 去第一个窗口
:sbrewind 先分割窗口再执行:brewind
:bmodified count 去第count个编辑过的缓冲
:sbmodified count 等于:split加:bmodified

缓冲选项

通常当所有编辑一个文件的窗口都关掉后,这个窗口的缓冲就变成”不活动”,如果不想这样,可以设置

:set hidden

让它变成隐藏而不是不活动。

通常分割/缓冲相关的命令会分割当前窗口,但是也可以让Vim在已经有窗口打开所指定的缓冲时,切换到那个窗口而不是新建一个:

:set switchbuf=useopen

更多关于switchbuf的内容参见23章。

固定链接 留言

Vim简明教程4:块和多文件编辑

九月 1, 2006 @ 11:04 am · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

剪切,粘贴和复制

当你在删除文字的时候,比如d, x之类的,被删除的内容都被保存了下来。你可以通过

p

来粘贴它们。

交换字符
有时你会把两个字母打反,比如把the打成teh。用

xp

命令就可以把它们调换位置。原理是这样的,首先x会把e删除并保存,p会把它粘贴到光标所在位置,也就是h之后。

关于粘贴的更多
p命令可以用多次。p命令把内容粘贴在光标之后,而

P

把内容粘贴在光标之前。

标记

Vim允许你在文本中做标记。命令

ma

会在光标所在处做一个名为a的标记。你最多可以在文本中做26个标记(a-z)。

要移动到一个标记,用命令

`标记

其中`是在键盘左上角数字一左边的那个键

要移动到一个标记所在行的行首,用命令

‘标记

其中‘是单引号

标记在删除大量文件内容人时很有用。比如

在你想要删除的文本的开始处做标记ma

然后移动到想删除文本的末尾,用d`a删除从此位置到标记a间的内容。

注意,标记会跟着它所标记处的文本移动(比如在它之前插入或删除了东西)

标记都在哪呢?

:marks

命令会列出所有标记的列表。

复制

y

命令用来复制,它的用法与d很相似。

复制一行

Y(大写)

复制一行内容

管道

!动作 命令

会把由”动作”选中的文本作为”命令”的输入,并用”命令”的输出替换选中的文本。

举个例子,sort命令会对一个文件的内容排序。如果想对当前正在编辑文件的前10行排序,可以这样:

先把光标移动到第一行,然后

!10G sort

!!命令

命令把当前行作为“命令”的输入。(这是一个把系统命令的输出放到文件里的好方法)。

编辑另一个文件

:vi 或 :e

可以关闭当前文件,并打开新的文件。

如果当前文件没有保存,则会出现提示。这时使用

:w

会保存未保存的文件。

View命令

:view 文件

会在Vim中以只读方式打开文件。

处理多个文件

可以在调用Vim时指定多个参数以依次编辑多个文件

Vim 文件1 文件2 文件3 …

默认情况下Vim每次只会编辑一个文件,当编辑完一个文件时,

:next

命令会关闭光前文件打开下个文件开始编辑。

我在哪里
当你在编辑多个文件时有时会忘了自己在编辑哪个。

:args

命令会显示当前正在编辑哪个文件。

编辑上一个文件

当要编辑上一个文件时,用命令

:previous 或 :Next。

编辑每一个或最后一个文件

要编辑第一个文件,用

:rewind

要编辑最后一个文件,用

:last

编辑两个文件

当同时编辑两个文件时,正在编辑的是当前文件,没在编辑的会被当成“另一个文件”,在这两个文件间切换要方便的多。用命令:

Ctrl+^

固定链接 留言

Vim简明教程3:查找

九月 1, 2006 @ 10:55 am · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

简单查找

/要查找内容

用/向后查找,紧随其后的要查找的内容。然后按下回车,Vim就会去为你找你想要的东西了。

要注意

.*%/?!$ 还有空格

都有特殊意义,如果要查找的内容中包含这些字符,要在前面加上一个。

要查找区配的下一处,用命令

或 n

它们的作用是相同的。

查找历史

查找命令可以允许你来查看查找的历史,在输入一个/以后,不要按回车,然后再按上下键就可以查看上一条或下一条查工历史了。在某个历史处如果按回车,就会查找此内容。

查找选项

高亮

:set hlsearch

命令可以让所有的查找都高亮显示匹配的部分。

:set nohlsearch

取消高亮选项

增量查找

一般情况下,Vim在查找时要等待用户输入整个要查找的内容,然后再去查找。增量查找则是不等用户输入完毕,就查找已输入的部分。要使用它需要进行下面设置:

:set incsearch

如查取消,则

:set noincsearch

反向查找

?要查找的内容

命令从当前位置开始反向查找,即向文件的开始查找。

改变方向

N

命令可以改变查找的方向并查找改变方向后的下一处匹配。

基本的正则表达式

行首(^)和行尾($)

^表示一行的开始,include会匹配每一处的include,而^include只会匹配在行首的include。
$表示一行的结束,was$只会匹配在行末的was。
如果想要匹配只有一个词the的行,用^the$。

匹配任意单个字符(.)

.匹配任一个字符,比如c.m表示以c开头以m结尾的有三个字母的字符串。

匹配特殊字符

好多字符在正则表达式中有特殊含意。要匹配这一类字符,要在前面加一个。比如,要匹配the.,就要用the.

固定链接 留言

Vim简明教程2:编辑得更快一些

八月 30, 2006 @ 12:43 pm · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

按词移动

w

按下w会前进一个词。

b

按下b会后退一个词。

这里,就像在Vim中的大部分情况下一样,在这两个命令前面加上一个数字可以让它们重复做多次。

移动到行首或行末

$

$会让你移动到所在行的末尾。

^

^会让你移动到所在行的开始。也可以做相似的事。不过^会移动到第一个非空的字符处,而会移动到行首。

这两个命令也接受数字参数,比如

2$

会移动到下一行末。

在行上查找

f要查找的字符

f用来在一行上查找一个字符并移动到该字符所在处。比如

fx

用来移动到此行当标后第一个x处。如果有一个数字参数,就可以指定移动到某个指定的匹配位置。

F

F用来向左查找。

移动到指定行

行号G

G命令会把你带到用行号指定的行。如果使用没有行号的G,将会移动到最后一行。

显示当前所在位置

:set number

Vim的可制定性是很强的,所以你可以通过:set设定很多选项。number就是其中之一。它是一个布尔选项,用来控制是否在最左边显示行号。

:set number

可以把它打开。

:set nonumber

则可以关闭此选项。

Ctrl+g

Ctrl+g会显示当然后在的位置。

向上和向下翻屏

Ctrl+u

会向上翻半屏

Ctrl+d

会向下翻半屏

删除文本

dw

dw会删除一个词。你应该可以看得出来,这里的w代表的就是word(词).其实d后面可以加好多东西来控制删除的对象。比如:

d$

会删除从当前位置到行末的所有内容。

数字放在哪

这里有一个疑问,如果想删除三个词,那么应该怎么办?是d3w,还是3dw。其实它们都能做到,不过原理不太一样。d3w是一次删除三个词,而3dw是执行三次删除一个词。其实这两者可以混起来,比如2d3w。

改变文本

c

c用来改变文本。它的用法跟d一样。

cc

用来删除一行并进入输入状态。

cw

用来删除一个词并进入输入状态等。

但是cw跟dw有一个不同之处。dw删除了一个词以后,还删除该词后面的空格。而cw只是会删除这个单词,空格仍然保留。

.

.命令会重复上一次所做的删除(d, x)或改变(c)命令。

合并行

J

J(大写)将当下一行接在当前行后,并在两者间插入一个空格来合并这两行。

替换字符

r替换的字符

r命令把当标处的字符替换成在r命令中指定的字符。

更改大小写

~

通过~可以把光标处的字符用它的大写(如果现在是小写)或小写(如果现在是大写)替换。

Vim有着简洁而强大的宏功能。

q宏名

按下 q+宏名 后会进入宏录制状态,也就是说,此后发生的一切操作都会记录到名为“宏名”的宏中。如果名为“宏名”的宏已经存在,则将它覆盖。

@宏名

会调用名为“宏名”的宏。

特殊字符

当要输入特殊字符时,可以用

Ctrl+k特殊字符代号

可以通过命令

:digraph

来得到一个完整的对应表,来查看特殊符号所对应的代号。

比如,要输入á, 则要通过下面的方法

Ctrl+ka’

固定链接 留言

Vim简明教程1:基本编辑

八月 30, 2006 @ 12:37 pm · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

开始之前要做的

touch ~/.Vimrc

这会创建空的~/.Vimrc文件,这会告诉Vim你想要让Vim以Vim方式工作。如果不这样做的话,Vim会以Vi兼空模式运行,会有好多有用的功能没法使用。这也可以在Vim运行过程中通过

:set nocompatible

来实现。

第一运行Vim

gVim file.txt

会运行gvim(Vim的图行化前端),并在其中打开file.txt文件

Vim命令

Vim

会让你在终端打开Vim编辑,而不是像刚才那样打开一个新的窗口。

模式

Vim是一个模式化的编辑器。也就是说,它在不同的模式下会有不同的表现。当最下面的一行是文件名或为空时表示正在普通模式。如果是–INSERT–表示是在编辑模式。而–VISUAL–则表示目前是可视化模式。

插入文本

i

键入i后会从普通模式转变到编辑模式。此时输入的东西将会作为文件的一部分。

当你编辑完毕后,按下就会从编辑模式转回普通模式。同时,不管现在是在什么模式下,都会把你带回普通模式。

移动光标

当你回到命令模式(即普通模式)时,可以用下面的键来移动光标

h(左), j(下), k(上), l(右)

这可能看上去比较奇怪,谁会用l去表示右???但是实际上这是有原因的。移动光标上是在编辑过程中经常要做的,而h , j, k, l就在放右手手指的地方,也就是说按这几个键是最快的。当然,也可以用方向键来移动光标,不过那会大大减低你的编辑速度。

删除字符

x

当你想删除一个字符时,把光标移动到它上面,然后按下x键,它就会消失。

撤消和重做

u

在普通模式下按下u会撤消上一布的操作。

Ctrl+R

如果撤消的次数过多,按下 Ctrl+R 会重做上次撤消的操作。

U

U(大字)是一个特殊的撤消键,它会撤消在在最后编辑的行上所作的所有操作。

退出

ZZ

ZZ会退出Vim并对所编辑的文件保存。

取消修改

:q!

当你编辑完一个文件发现你并不想这样编辑它时,:q! 会让你退出Vim而不保存所作的修改。

追加

a

i会在光标所在安符前插入字符,而a会让你在当标所在的位置之后继续输入内容。

删除一行

dd

dd命令会删除当前所在的一行内容。

新开始一行内容

o

o命令会在光标所在行下面加入一行,并将光标移动的此行的开始以供输入。

O

如果想在光标所在行的上面加入一行,请使用命令O(大写)

获得帮助

:help

:help命令让你可以进入和查看Vim的帮助。用ZZ退出帮助。同时可以用像在Vim一样的h, j, k, l键来移动光标。帮助中会有一些被竖线括起来的词,那其实是超级链接。用Ctrl+]就可以跟随它,Ctrl+t用来后退。如果要查找某一特定主题的帮助,使用

:help 主题

同时

也会起到和:help一样的效果。

重复命令

当要做多次同样的操作时,可以用计数来加快这一过程。

9k

会让你向上移动9行。通过在命令前加一个数字n,就可以执行这一命令n次。

Vim教程

Vim自带了一份Vim教程

:vimtutor

会打开它。

from http://hi.baidu.com/qiaoyuetian/blog/item/fee39666502f5221ab184c39.html