Emacs使用教程(八)

查找替换是任何编辑器都不可能缺少的功能,就连小小的Notepad都有快速查找,更不用说像Emacs这样的庞然大物了。其重要性这里就不多说了,接下来将一步一步给你介绍如何在Emacs中进行查找和替换。

  Emacs将查找分成了四个大类,分别是:简单查找,增量查找,词组查找和正则查找。四种方式各有特点,适用范围也不同,大家根据需要熟悉一两种即可。

​一、增量查找 

   先介绍增量查找的原因是这个是用的最多的查找方式,使用也很方便,直接C-s (isearch-forward)便进入增量查找状态,Minibuffer出现如下提示: 

 

   其实增量查找很好理解,就是边输入边查找,在输入的过程中离光标最近的匹配会用深色高亮,一屏中其它的匹配字符串会浅色高亮,参见这张图:

 

  只要是单词中包含”to” 的都会标记出来,比如tutorial。在输入查找字符串过程中可以随时用Backspace删除输入字符,当输入完成后按下回车会定位到向前最近的匹配字符串,并出现提示“Mark saved where search started”,就是说将你开始查找时光标所在位置加入了标记环,我们可以通过C-u C-@回到那个点。如果没找到字符串提示为“Failing I-search”,后接查找内容。C-s搜索时是向前进行查找,我们还可以使用C-r (isearch-backward)向后进行查找,注意这种方式的查找光标会定位到匹配字符串的最前方。虽然查找过程只会向一个方向进行,但到了文档底部或者头部还是会回到文档的头或底继续找,这就是常说的循环查找。

  在搜索的过程中并不一定第一个匹配项就是我们需要的内容,或者说我们需要找的地方不止一处,这样我们想能够快速的定位到下一个匹配项位置,解决办法也很简单,接上例我们输入”to”后不要急着按回车,而是再用C-s就会向后定位,或者用C-r 向前定位,总之停到你想要的地方为止。另外,如果你退出了这次的查找,后面又想找同一个东西,那么使用C-s C-s 即可,同理C-r C-r 。

  Emacs在多次查找的过程中会维护一个查找环(search ring) ,这是我们见到的第三个环了,前面两个是mark ring、kill ring。在输入C-s后,使用M-n和M-p可以调出查找环中上一个和下一个查找的内容。虽然这个也叫环但它是个标准的队列,有头有尾不会循环。

  在增量查找中还有些特殊的功能:通常查找时是忽略了大小写的,但如果我们输入的查找内容有小写字母还有小写字母,Emacs会自动进入大小写匹配查找状态中;也可以在查找的过程用M-c 快速切换是否大小写敏感,不过只对此次查找启用;如果我们想找回车符用C-j 代替;还可以使用M-Tab (isearch-complete)对查找进行自动完成,候选项是查找环中的东西,当然你用M-Tab 是没效果的,用了后连Emacs都不在了,我们需要对isearch-complete重新绑定;在增量查找状态中按C-h C-h 会进入增量查找的帮助,里面的内容大家可以自己研究;使用C-w 可以将光标处单词复制到查找区域中进行快速输入,这个功能比较常用;与其类似的是C-y 它能够把光标所在处直到行尾的内容都复制到查找区域,提醒一点这两个命令在复制的过程中会把所有字母变成小写;M-y 还能把kill 环里的内容复制到查找区域;C-M-w 用于删除查找区域中最后一个字符;而C-M-y 把光标处字符复制到查找区域最后;复制光标处的字符还有个方法,进入增量查找状态后,首先按M-e 定位到查找区域的最后,再使用C-f 就可以开始复制了。

 

二、简单查找

  简单查找顾名思义就是简单的查找方式(其实不一定有增量查找来的快),有时候又叫它非增量查找。使用命令是C-s RET string RET ,首先用C-s调出增量查找,然后回车取消掉进入简单查找,再输入需要查找的字符串,最后回车Emacs会向后开始找,直到第一个满足的字符串后面。大家在按命令的过程中可以观察Minibuffer中的提示,按下C-s后,会出现一个蓝色的“I-search:”,回车后变为“Search:”,当找到所输入的内容后出现提示“Mark saved where search started”,其实简单查找和增量查找大部分都没什么区别,增量查找中命令基本上这儿也能用,最大的区别就是等你输入完成后它才开始搜索,还有一点就是没有高亮。向前查找的话一回事,C-r RET string RET 。向后向前分别对应命令search-forwardsearch-backward

 

三、词组查找

  词组查找一般用在大段文本编辑中,比如写新闻、写信之类的。它在查找的过程中会忽略掉一些标点符号,比如换行符,逗号,句号之类的,查找时也是进行的增量查找,边输入边找,不过对于单词来说是全词匹配。其命令是M-s w (isearch-forward-word)。查找的示例如下图:

 

 

   我在找”it”的时候,红框圈出来的permitted并没高亮,而我输入”it under”时,逗号和回车符都忽略掉了,这些特点在查找大段句子的时候相当好用。词组查找也可以使用非增量搜索的方式,对应命令M-s w RET words RET (word-search-forward) ,向回找M-s w C-r RET words RET (word-search-backward),这里面的words就是你需要查找的词组。词组查找其余大部分使用方式和前面的类似就不多叙述了。

 

 四、正则查找

  这种查找方式使用正则表达式,功能相当的强大,其主要还是看各人正则表达式的水平了,Emacs中的正则语法放到后面再讲,这里只说下怎么调出正则查找。命令 C-M-s (isearch-forward-regexp),咳,用快捷键的时候把QQ关了,这个是向前找,命令可以看出来使用的是增量查找方式,向后是C-M-r (isearch-backward-regexp)。

 

五、替换

  本次的另一半内容就是介绍Emacs中的替换功能,就是将一个字符串变成另一个字符串。

  最简单粗暴的方式就是使用replace-string 这个命令,用法如下:M-x replace-string RET oldstring RET newstring RET,第一次回车输入需要替换的字符串,第二次回车输入想要变成的字符串,最后确认。它将会把所有匹配oldstring 的字符串全部替换掉,建议大家在没绝对把握前还是不要用这个的好。在替换的过程中Emacs对大小写有比较智能化的处理,比如输入M-x replace-string RET abc RET efg RET,所有的”abc”都变成了”efg”,但是”ABC”会替换成”EFG”,不止这样”aBc”会改为”eFg”,大写对大写,小写对小写。当然我们可能不想做这样的变化,那么把变量case-replace 设为nil 即可,还有个相关的变量case-fold-search ,设为nil后,它会在查找的时候就强制匹配大小写。

  暴力替换的正则版命令replace-regexp,用法和上面一样,只是oldstring改为正则表达式。

  实际上,我们在替换的时候并不希望所有的东西都换掉,还是想中间有个给自己判断选择的过程,在Emacs中称其为查找替换,M-% (query-replace) ,用的时候和前面一样,先输入oldstring,再输newstring,但是它是一个一个找的,对每个找到的匹配询问用户该如何处理,根据你的回答它再做出下个动作。下面这张表列出了所有可能的回答和相应。 

 

输入 响应
SPC 或者 y 替换当前匹配并前进到下一个匹配处
DEL 或者 n 忽略此次匹配并前进到下一个匹配处
. 替换当前匹配并退出
, 替换当前匹配并停在此处,再按y后前进
! 替换所有剩余匹配
^ 回到前一个匹配处
RET 或者 q 直接退出
e 修改新字符串
C-r 进入递归编辑状态
C-w 删除当前匹配并进入递归编辑状态
C-M-c 退出递归编辑状态,返回查找替换
C-] 退出递归编辑状态,同时退出查找替换
C-h 显示帮助

 

      这些命令中,相对y,n,q用的会多点。但如果按了任何其它的键都会退出查找替换状态,不小心退出后还能使用C-x ESC ESC返回。

      最后说下什么是递归编辑状态,简单的说就是你在查找替换的过程中突然发现需要修改点东西,但又不想直接退出查找替换,这时Emacs提供了一个临时的编辑状态可以让你先干刚想起的事,等你做完了还可以回到查找替换状态,这个临时的状态就叫递归编辑状态。

 

      注意看,这时mode line中的模式名外面加了一层方括号”[]”,标明进入了递归编辑状态。干完事后使用C-M-c 就可以回到前一个状态,实际上,在任何时候都可以用命令 recursive-edit 进入递归编辑,用abort-recursive-edit 或者top-level 退出,也可以用C-M-c 返回前一状态。

 

小结:

 

按键

命令

作用

C-s

isearch-forward

向前进行增量查找

C-r

isearch-backward

向后进行增量查找

M-c

 

(查找状态)切换大写敏感

C-j

newline-and-indent

(查找状态)输入换行符

M-Tab

isearch-complete (查找状态)自动匹配

C-h C-h

 

(查找状态)进入查找帮助

C-w   (查找状态)将光标处单词复制到查找区域
C-y   (查找状态)将光标处直到行尾内容复制到查找区域
M-y   (查找状态)把kill 环中最后一项复制到查找区域
C-M-w   (查找状态)删除查找区域最后一个字符
C-M-y   (查找状态)将光标处字符复制到查找区域最后
C-f   (查找状态)将光标处字符复制到查找区域最后
C-s RET search-forward 向前进行简单查找
C-r RET search-backward 向后进行简单查找
M-s w isearch-forward-word 向前进行词组查找
M-s w RET word-search-forward 向前进行词组查找(非增量方式)
M-s w C-r RET word-search-backward 向后进行词组查找(非增量方式)
C-M-s isearch-forward-regexp 向前进行正则查找
C-M-r isearch-backward-regexp 向后进行正则查找
  replace-string 全文替换
  replace-regexp 全文正则替换
M-% query-replace 查找替换
  recursive-edit 进入递归编辑
  abort-recursive-edit 退出递归编辑
  top-level 退出递归编辑

 

 

 

 

变量

作用

case-replace 设置大小写自动替换
case-fold-search 设置大小写匹配查找

 

 

 

Emacs使用教程(七)

 Emacs 在不同的操作系统中表现会有一些小的差异,这里我接着上一章所提到的粘贴复制来比较一下不同操作系统中Emacs的剪切板。

 

一、复制到剪切板

  在Emacs中我们剪切、复制文本除了使用命令之外,还可以利用工具栏上的快捷按钮或者菜单栏里面菜单项,在默认情况使用工具栏和菜单栏进行剪切复制都会把相关内容发送到系统剪切板供其它程序使用。在Windows 和Mac OS X中使用C-w 或M-w也会复制内容到剪切板,不过Linux不行。

  我们选择区域的另一种方式是使用鼠标,它也有小小的差别,如下表: 

使用鼠标选择区域
  Linux Windows Mac OS X
是否发送到系统剪切板 no yes yes
是否发送到Kill环 yes yes yes

       在Linux中想要发送到系统剪切板除了使用鼠标点工具栏还可以利用几个剪切板命令,比如clipboard-kill-region 剪切区域并发送到系统剪切板和Kill 环中,clipboard-kill-ring-save 复制区域内容到系统剪切板和Kill 环中。当然这两个命令Windows 和Mac里面也可以用。本质上这两个命令就是菜单栏中对应的剪切和复制。

 

二、从剪切板中提取

      既然从Emacs到系统剪切板有差异那从剪切板复制到Emacs里面也有些不同,直接看下表: 

从系统剪切板粘贴
  Linux Windows Max OS X
C-y粘贴 yes yes yes
工具栏粘贴按钮 yes yes no
菜单栏粘贴菜单项 yes yes no
鼠标中键 yes yes yes
M-x clipboard-yank yes yes yes

      这里解释几个地方,一是鼠标中键,有的鼠标没中键就是滑轮了,它也有粘贴功能,而命令clipboard-yank 从剪切板中粘贴对应的是菜单栏上的粘贴功能。

 

小结:

      本章内容很少,就是一些简单的对比,在以后的学习中还能见到更多的不同平台下Emacs的差异。

 

按键

命令

作用

  clipboard-kill-region 剪切区域并发送到系统剪切板和Kill 环中
  clipboard-kill-ring-save 复制区域内容到系统剪切板和Kill 环中
  clipboard-yank 从剪切板中粘贴到Emacs中

Emacs使用教程(五)

一、标记和区域

  所谓区域(region)就是平时我们使用鼠标选中的一段文字,在emacs中用样可以使用鼠标来选择一段文字表示区域,如果使用键盘操作的话需要用一个术语叫标记(mark),也就是一个基准点,或者说是区域的起点,使用命令C-SPC 用来设定标记,不幸的是这个组合键通常情况是被输入法给截获了,我们得使用C-@来代替,要多按个Shift,操作起来感觉有点别扭。OK,在设定好标记后我们可以让光标移动到任何想去的地方,在光标和标记之间就是选定的区域,emacs里面会高亮显示这个区域,参见下图,注意,这个区域是动态存在的,只要光标位置变了,区域也随着变化,只是其起点永远是那个标记。

  这个时候就可以对选中的区域进行操作了,比如说C-w (kill-region) 删除选中的区域,或者C-x C-u 将所选区域字母改成大写字母,这是个禁用命令需要确认后才能生效。还有个常用的操作是C-x C-x (exchange-point-and-mark),交换光标和标记,就是说把区域的起点改在光标所在处。取消标记和区域直接使用C-g 就可以了。

  除了这种手工选择区域之外,emacs还内置了一些快捷的选取方式。像常用的全选就是C-x h ,全选后标记在文档的最后,而光标在文档的最前面。C-x C-p 选择整页,页是由分页符界定的。选取一段使用M-h 。M-@ 从当前位置选到单词尾(中文里的单词是两个标点符号间的文字),重复按这个命令会一直往后选取单词。这四个命令有个共同的特点就是选取的区域标记在最后,光标在最前,这个和常规理解有些区别,记住就是了。

  在Emacs 23之后还有个新特性叫shift选择(shift selection),故名思意就是用shift键来快速选择区域,通过使用shift键和C-n, C-p之类的组合来选择区域,和常规选择有些区别的是,在shift选择过程中使用了任何非shift组合都会取消当前选择区域。

二、标记环

  标记的一个主要功能是界定区域,此外还有个作用就是记忆一个点供今后使用,在一个buffer里面可以用标记记忆16个点,称为“标记环”,标记环实际是个先进先出的队列。

  我们使用命令C-@ C-@ 把一个标记加入标记环,这个命令做了两件事,第一次按C-@时标记了一个点(此时已经加入标记环了),第二次按C-@时取消了当前标记的激活状态,我们可以在minibuffer中看到提示Mark deactivated。而命令C-u C-@ 来选择上一个加入标记环的标记,如果选中的标记处于激活状态,它会取消其激活。使用C-u C-@不会删除标记,仅是在标记环中不停的向前跳跃,注意这里我们只可能在当前buffer中的标记间跳跃,不会跑到其它的buffer里面去。

  如果修改变量set-mark-command-repeat-pop 为 non-nil,在按下C-u C-@后,我们可以就使用C-@在标记环中跳跃了。

  变量mark-ring-max 表示了一个buffer中标记环中的最大标记数,默认为16。

  还有变量mark-even-if-nonactive 和标记环相关,当其为nil 时,表示只能使用激活状态的标记,默认为non-nil 。

  另外在emacs中还存在一个全局标记环,C-@ C-@在把标记加入当前buffer标记环同时,也把标记加入了全局标记环,我们可以用命令C-x C-@ (pop-global-mark)在全局标记环中选择。

三、非持久性标记模式

  这个东西这里只是稍微提及一下,平时用到的地方很少,所谓非持久性标记就是指我们在选择了一个区域后,任何修改该区域的操作都会改变区域的激活状态。而我们可以将非持久性标记模式关闭,这样选择的区域永远处于激活状态,命令是transient-mark-mode ,这是个切换变量只有开启和关闭两个状态,我们每次使用M-x transient-mark-mode命令都会将其值从一个切换到另一个。关闭该模式后最显著的特点是选择区域时没有高亮(不过使用鼠标选择和shift选择高亮还是有的)。令人头疼的也是这个特点,我们根本不知道自己选择了哪些地方。

  我们会使用这个东西只有一种情况,某些命令在关闭非持久性标记模式时,其作用有少许差异,不过基本上这些差异很少去关注,所以这段大家看看就行。

小结:

按键

命令

作用

C-@ set-mark-command 设定标记
C-x C-x exchange-point-and-mark 交换标记和光标位置
C-w kill-region 删除区域中内容
C-x C-u upcase-region 将区域中字母改为大写
C-x h mark-whole-buffer 全选
C-x C-p mark-page 选取一页
M-h mark-paragraph 选取一段
M-@ mark-word 选取一个单词
C-@ C-@   加入点到标记环
C-u C-@   在标记环中跳跃
C-x C-@ pop-global-mark 在全局标记环中跳跃
(none) transient-mark-mode 非持久化标记模式

变量

作用

set-mark-command-repeat-pop 是否使用C-@连续跳跃
mark-ring-max 标记环最大容量
mark-even-if-nonactive 是否只使用激活状态标记

Emacs使用教程(一)

前言的前言:本人也是初学Emacs,之前对Vim也只接触了一点,所以也谈不上对哪个更喜欢,也分不出哪个更好。写这个教程的目的一是方便自己更好的学习Emacs,二是没事找事。如果有专家路过还望多指点。

前言:大名鼎鼎的Emacs,传说中程序员的终极武器,已经跨越了文本编辑器,IDE的境界,可以替代操作系统GUI的东东。怀着一种膜拜的心情我决定开始学习Emacs,期望有一天也能成为一代Emacs大侠。

参考书目:
1. GNU Emacs Manual (Emacs 官网有下)
2. O’Relly Learning GNU Emacs, 3rd Edition

一、Emacs的安装使用

学习软件的第一件事当然是把它下下来, http://ftp.gnu.org/pub/gnu/emacs/windows/emacs-23.1-bin-i386.zip 目前最新版23.1,这个版本号够吓人的,Opera的10.0还不及别人的一半。本人不幸,使用的是Windows版本。
安装过程异常简单,直接解压就行,但路径中不能包含空格,所以就表往Program Files文件夹下面丢了,我是直接放在根目录的,找起来也方便。运行bin目录下的addpm.exe可以添加开始菜单快捷方式。也可以直接运行runemacs.exe 来启动Emacs。
卸载也很方便,Emacs不会对系统写任何垃圾东东,直接删除文件夹即可卸载,还有你的快捷方式。
启动Emacs后的界面如下:

猛的一看,没什么太出彩的地方,感觉比较简陋。上面依次是标题栏、菜单栏、工具栏,中间一大块就是编辑文本的地方,下面两行是mode line 和echo area。
echo area是你输入命令和显示消息的地方。
在mode line中第一个字符表示字符集,c代表chinese-gbk,后面那个 \ 符号表示换行类型,\是指DOS的CRLF换行,另外还有Unix的LF换行和Mac的CR换行。然后一个字符,表示打开的文件是否可写(先称为文件便于理解,实际上是buffer),%表示只读,- 和 * 表示可写。再一个字符表示文件是否已写,% 或 – 表示还没动,*表示已经更改。这两个字符组合起来有四个状态。

符号 表示
%% 只读,未更改
可写,未更改
** 可写,已更改
%* 只读,已更改

再后面一个 – 表示路径,后面黑体的 GNU Emacs 表示buffer的名称。后面的All表示光标的位置,当文件在一页就能显示完的时,这里是All,此外还有Top, Bot,以及当前位置百分比。L5表示第五行。Fundamental 是模式名,模式种类很多,这个以后介绍。
如果是第一次使用,点击Emacs Tutorial,里面也有Emacs的一些基本介绍,而且是中文。

二、Emacs按键

Vim 把控制和编辑分成了两个模式,单独操作,互不影响。而Emacs是同时进行编辑和控制,只不过控制命令需要使用控制键。
Emacs的控制键就三个Control,Shift和 Meta,Control 和 Shift 键盘上都有,Meta 在美式键盘中就是Alt,在苹果键盘上是那个很花的四个圈的键,如果键盘上没有Alt (这个要某些欧洲人才会遇到)可以使用Esc 代替,另外Esc 不想Alt 通常当组合键用,它要单独按一下,再按另外的。
以后控制命令就这样表示:
C-f       Ctrl+f
C-M-f   Ctrl+Alt+f
C-_    Ctrl+Shift+-
Emacs中,这些组合键其实是一些函数的快捷方式,比如C-n 是next-line的快捷方式。我们除了使用组合键意外,还可以直接调用函数。
按下M-x,然后输入函数名就可以调用函数了。

三、进入退出Emacs

进入前面已经说了,现在说怎么退出。
最直接的办法,点右上角的叉,当然这个没什么技术含量。
比较文明的方法,C-x C-c ,如果当前文件已经修改会问你是否保存。
野蛮点的方法,调用函数kill-emacs,即M-x kill-emacs,直接退出,不管是否修改。
不过直接退出后,Emacs会在相同目录下保留一个以#号开头结尾的相同文件名文件,下次启动可以使用M-x recover-file来恢复。如果是多次保存后,还会有个以~结尾的文件,保存了上次信息。

自同步 局域网文件同步

自同步是一款小巧实用的局域网文件同步工具,具有使用方便、同步快速的特点,在局域网内,它可以让你在任意两台电脑(手机)的两个目录之间建立同步,你在一个目录中添加/修改的文件,在另一个目录中也会相应的添加/修改。

基本介绍

1、 无需再用 U盘、QQ、邮件传输文件;
2、 windows 用户可以抛弃文件夹共享、winScp;
3、 linux 用户可以抛弃scp、samba、rsync;
4、 mac用户不用设置“文件共享”;
5、 Android 和 IOS的图片能便捷同步(备份)到你的电脑上了。

使用方法

下面例子是教你如何在两台 windows 电脑(zisync-window1与 zisync-window2)之间建立同步,如何让 zisync-window1桌面上的目录 A与 zisync-window2桌面上的目录B建立同步关系。
Step1:启动”自同步”程序,设置同步口令(token),自同步会自动发现局域网内有相同同步口令的设备,如图:

输入您的同步口令(我们在此输入同步口令 zisync),点击完成,发现另外一台同步口令为zisync的设备(zisync-window2),其中 zisync-window1为当前设备,如图:

Step 2:建立设备间的互相信任, 鼠标右键点击设备 zisync-window2,点击【添加信任】,向 zisync-window2 发送请求信任的请求,如图,

然后在 zisync-window2 设备上同意信任该设备,完成后,可以看到与 zisync-window2已经建立了信任,如图:

Step 3:建立同步目录。点击选项页上的【同步目录】 ,可以看到当前没有已建立的同步关系,所以我们点击左下角的【添加】按钮来建立同步目录,如图:

选择【使用已有的同步目录】,然后点击下一步,会出现让您选择其它设备的同步目录界面,如图:

当前在zisync-window2上没有看到已存在的同步目录,所以我们点击【创建同步目录】,选择“桌面/B”来为 zisync-window2 创建新的同步目录,点击完成后,我们可以看到zisync-window2多了一个同步目录的信息,如图:

注:这里也可以为本机创建同步目录,这样不仅可以在两台设备的目录之间建立同步关系,也可以在一台设备的目录之间建立同步关系。
点击【下一步】去选择本地的目录,如图:

选择与建立同步关系的本地目录,在该教程中,我们选择“G:/zisync” ,点击【完成】后,这样我们就完成了在两个设备目录之间建立同步关系的操作。
Step 4:在自同步主界面上【同步目录】可以看到你刚刚建立同步关系,如图:

 

下载地址:

官网下载

VideoInspector 检测视频编码

VideoInspector 是一款免费的编码器检测程序,能为您快速解析各种影片格式,例如 AVI、DivX、XviD、MPEG、QuickTime 等,只要使用 VideoInspector 载入需要测试的影片,程序马上就能告诉您该影片是由何种视频以及音频编码方式组成,当计算机缺少该解码器时,程序会自动开启解码器下载功能,按下载后即可连接到解码器下载网页。

 

 

如今在线视频和万能视频播放器已经让大多数人省心到不需要理会视频文件的编解码问题了,但还会有少部分人需要。

VideoInspector 与 SUMo – 获取已安装软件列表及更新 出自同门,其官方还有许多小巧实用的软件工具。

VideoInspector 用起来就非常简单了,自带有中文,只需加载视频文件就能看到详细信息了,支持 AVI, Matroska, MPEG I, MPEG II, QuickTime 格式。

其中视频包括解析度、帧速、比特率、品质因数、编解码器,音频包括声道数、采样率、比特率、编解码器。还能显示视频时间以及电影完整性与否。会自动检测电脑里是否已经安装了相应的编解码器。

 

下载地址:

官网

注册信息:

name:lengxue
code: 50083090086072095106077

模仿者 模拟鼠标自动操作

 

模仿者 是一款能模拟鼠标操作的机器人工具,能够实现鼠标自动操作。功能是运行一个你设计好的键盘和鼠标的脚本,并且运行这个脚本的时候键盘和鼠标会听话。

截图

计算机是用来解决重复性工作最佳的工具,而有时候我们还是会碰到一些重复操作,除了傻傻的坐在电脑前点击鼠标外,还是可以使用一些工具来让计算机为自己服务。

 

使用步骤:

1.设置好脚本。

2.按Ctrl+Enter调试。

3.调试状态下长按Esc可中止。 3.调试无误后点击”保存”按钮保存脚本。

4.需要调试保存好的脚本,请先打开模仿者,再将文件拖入脚本框。

5.脚本可直接静默运行,方法是将ido文件的打开方式设置成模仿者。

6.脚本静默运行时长按Esc可退出。

7.只运行同时运行一个脚本。

下载:

论坛 | 百度盘

ZendStudio 常用快捷键

注:本文省略“通用快捷键”描述,诸如:ctrl+N=新建,ctrl+O=打开,ctrl+C=复制,ctrl+V,ctrl+X……等等几乎所有软件都通用的一组快捷键,而着重介绍zde独有的快捷键。

了解并灵活运用这些快捷键以后,一定能帮助您在实际的项目操作中更加游刃有余。

编辑功能

组合键

实现功能

适用条件

Ctrl+/

单行注释。当前为php代码时,则在光标所在行添加双斜杠行注释,选择多行则每一行都添加双斜杠;而当代码为html时则在行前后添加<!– –>注释,选中多行将在选区前后添加<!– –>注释,而非每行添加

PHP代码、html代码全部适用,不适用于CSS部分

Ctrl+Shift+/

块注释,为选择的PHP代码添加/* */块注释,如果没有选择任何代码,则将光标所在行添加块注释

PHP代码适用,对HTML代码其功能与Ctrl+/相同

Ctrl+U

选择的代码片段全部转换为大写

php、html等均适用

Ctrl+L

选择的代码片段全部转换为小写

php、html等均适用

Ctrl+D

复制光标所在行

所有代码均适用

Ctrl+E

删除光标所在行

所有代码均适用

Tab/Shift+Tab

按tab增加代码缩进,默认为4个空格位置,可在首选项中进行设置,Shift+Tab则减少缩进,此操作对多行操作同样有效。即多行同时增加/减少缩进。

所有代码均适用

Ctrl+Alt+F

在文件中查找,打开“在文件中查找”对话框

整个ZDE环境适用

Ctrl+BackSpace

删除光标前一个单词,或者一个符号,注意这里的“一个单词”是由ZDE自行理解的,与英文中的一个单词有一定出入

所有代码均适用

Ctrl+G

转到行。打开转到行对话框,填写行数字即可转到相应行,此为通用快捷键

整个ZDE环境适用

Alt+ →,←

右箭头是定位到光标的下一个位置,左箭头则是定位到光标的上一个位置。

整个ZDE环境适用

环境切换

组合键

实现功能

适用条件

Esc

隐藏辅助窗口,以便让编辑区域最大,而文件管理器窗口不会隐藏

整个ZDE环境适用

Ctrl+W

切换自动换行,即当代码超长时是否出现横向滚动条

Ctrl+Tab

在各个编辑器标签页之间切换,也可描述为在多个打开的文件窗口间切换

Ctrl+F4

关闭当前标签页,Alt+F4是关闭整个ZDE环境,注意下区别

HTML标记

组合键

实现功能

适用条件

Ctrl+1,2,3

分别添加一对<h1>、<h2>、<h3> html标签,

所有代码部分

Ctrl+Enter

断行,即产生一个<br />标签,这里注意ZDE自动产生的为<br>标签,不符合web标准

Ctrl+~

空格即一个 注意:~键位于PC键盘数字1左侧,tab键上方

Ctrl+B

粗体,产生一对<b>标签,web标准似乎提倡使用<strong></strong>

Alt+I

斜体,产生一对<i>标签

书签操作

组合键

实现功能

适用条件

F2

添加/删除书签

所有代码部分

Ctrl+F2

跳到当前文件的下一个书签

Alt+F2

在当前项目的所有书签间切换

Ctrl+Shift+F2

删除所有书签

Ctrl+Shift+M

显示书签对话框

Zend Studio调试快捷键列表

组合键

实现功能

适用条件

F9

添加/删除断点

所有代码部分

F10

逐过程。单步执行调试文件到下一行

F5

开始执行。执行调试文件,直到遇到断点。

F8

调试URL。打开调试URL对话框

F12

概要文件URL。打开profile URL对话框

Shift+F8

添加监视点。打开添加监视点对话框

Shift+F11

跳出。单步执行到返回后执行的第一行

F11

逐语句。单步执行到下一被执行的行

Shift+F10

执行到光标行。执行代码到光标所在行。

Ctrl+F5

无中断的执行脚本

Shift+F5

停止调试器

Ctrl+Alt+B

在浏览器中显示

注:调试快捷键只有在调试代码的时候才会用到,关于如何在Zend Studio 调试脚本,以及如何搭建调试服务器等内容,在后续教程中将做详细的讲解。

 

Windows安装Pycrypto

最近想着利用pysftp将本地的图片全部上传到站点服务器上去

结果却是发现他每次都提示找不到Crypto模块

没办法,只好上网找了   但是苦逼的是安装pyCrypto的时候  要么就报找不到.h头文件,要么就直接编译的时候给报错

报找不到.h文件的解决方法:

1. 直接从VS库里面将对应的.h文件放到python的include文件夹里面

2. 更改python脚本,让其在cl.exe后面添加新目录 –I <.h文件所在目录>

 

编译时错误:

[codesyntax lang=”text”]
D:\Apps\Python\module\pycrypto-2.6.1>setup.py install
running install
running build
running build_py
running build_ext
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

building ‘Crypto.Random.OSRNG.winrandom’ extension
W:\PROGRA~2\Microsoft Visual Studio 9.0\VC\bin\cl.exe /c /nologo /Ox /MD /W3 /GS – /DNDEBUG -Isrc/ -Isrc/inc-msvc/ -ID:\Apps\Python\include -ID:\Apps\Python\PC /Tcsrc/winrand.c /Fobuild\temp.win-amd64-2.7\Release\src/winrand.obj
winrand.c
D:\Apps\Python\include\winnt.h(3019) : error C2061: 语法错误 : 标识符“PCONTEXT”
D:\Apps\Python\include\winnt.h(3020) : error C2059: 语法错误 : “}”
D:\Apps\Python\include\winbase.h(1481) : error C2061: 语法错误 : 标识符“LPCONTEXT”
D:\Apps\Python\include\winbase.h(1481) : error C2059: 语法错误 : “;”
D:\Apps\Python\include\winbase.h(2222) : error C2146: 语法错误 : 缺少“)”(在标识符“lpContext”的前面)
D:\Apps\Python\include\winbase.h(2222) : error C2081: “LPCONTEXT”: 形参表中的名称非法
D:\Apps\Python\include\winbase.h(2222) : error C2061: 语法错误 : 标识符“lpContext”
D:\Apps\Python\include\winbase.h(2222) : error C2059: 语法错误 : “;”
D:\Apps\Python\include\winbase.h(2223) : error C2059: 语法错误 : “)”
D:\Apps\Python\include\winbase.h(2230) : error C2143: 语法错误 : 缺少“)”(在“*”的前面)
D:\Apps\Python\include\winbase.h(2230) : error C2143: 语法错误 : 缺少“{”(在“*”的前面)
D:\Apps\Python\include\winbase.h(2231) : error C2059: 语法错误 : “)”
error: command ‘W:\\PROGRA~2\\Microsoft Visual Studio 9.0\\VC\\bin\\cl.exe’ failed with exit status 2
[/codesyntax]

 

找了很久 都没有找到解决办法

后来一想,算了虽然是开源的 但至少网络上已经人家已经编译好的程序 就直接进行复制得了
也省得自己耗费大量的精力去处理这些错误

功夫不负有心人,总算让我找到Windows下使用VS2008或者VS2010编译的PyCrypto应用了

 

PyCrypto 2.6:

 

PyCrypto 2.3:

 

PyCrypto 2.1:

 

好了 总算是大功告成了  暂时就先这样处理吧

同时 也欢迎诸位大神,如果能解决那个编译时错误的话 也敬请和我联系

 

本文参考至:  The Voidspace Python Module

Windows 常见错误

最近在编写Python代码的时候,可能会遇到一些意外的错误,IDE会显示错误代码。比如:WindowsError: [Error 2]。

但这些代码并没有直接说明是什么错误,为了避免每次都要上网搜索该问题,干脆直接把Windows常见的Error都给列出来,纯粹就是为了方便下次写代码时好处理这些数据了~~

0操作成功完成。
1功能错误。
2系统找不到指定的文件。
3系统找不到指定的路径。
4系统无法打开文件。
5拒绝访问。
6句柄无效。
7存储控制块被损坏。
8存储空间不足,无法处理此命令。
9存储控制块地址无效。
10环境错误。
11试图加载格式错误的程序。
12访问码无效。
13数据无效。
14存储器不足,无法完成此操作。
15系统找不到指定的驱动器。
16无法删除目录。
17系统无法将文件移到不同的驱动器。
18没有更多文件。
19介质受写入保护。
20系统找不到指定的设备。
21设备未就绪。
22设备不识别此命令。
23数据错误(循环冗余检查)。
24程序发出命令,但命令长度不正确。
25驱动器无法找出磁盘上特定区域或磁道的位置。
26无法访问指定的磁盘或软盘。
27驱动器找不到请求的扇区。
28打印机缺纸。
29系统无法写入指定的设备。
30系统无法从指定的设备上读取。
31连到系统上的设备没有发挥作用。
32进程无法访问文件,因为另一个程序正在使用此文件。
33进程无法访问文件,因为另一个程序已锁定文件的一部分。
36用来共享的打开文件过多。
38到达文件结尾。
39磁盘已满。
50不支持网络请求。
51远程计算机不可用。
52在网络上已有重复的名称。
53找不到网络路径。
54网络忙。
55指定的网络资源或设备不再可用。
56已到达网络BIOS命令限制。
57网络适配器硬件出错。
58指定的服务器无法运行请求的操作。
59发生意外的网络错误。
60远程适配器不兼容。
61打印机队列已满。
62无法在服务器上获得用于保存待打印文件的空间。
63删除等候打印的文件。
64指定的网络名不再可用。
65拒绝网络访问。
66网络资源类型错误。
67找不到网络名。
68超过本地计算机网卡的名称限制。
69超出网络BIOS会话限制。
70远程服务器已暂停,或正在启动过程中。
71当前已无法再同此远程计算机连接,因为已达到计算机的连接数目极限。
72已暂停指定的打印机或磁盘设备。
80文件存在。
82无法创建目录或文件。
83INT24失败。
84无法取得处理此请求的存储空间。
85本地设备名已在使用中。
86指定的网络密码错误。
87参数错误。
88网络上发生写入错误。
89系统无法在此时启动另一个进程。
100无法创建另一个系统信号灯。
101另一个进程拥有独占的信号灯。
102已设置信号灯且无法关闭。
103无法再设置信号灯。
104无法在中断时请求独占的信号灯。
105此信号灯的前一个所有权已结束。
107程序停止,因为替代的软盘未插入。
108磁盘在使用中,或被另一个进程锁定。
109管道已结束。
110系统无法打开指定的设备或文件。
111文件名太长。
112磁盘空间不足。
113无法再获得内部文件的标识。
114目标内部文件的标识不正确。
117应用程序制作的IOCTL调用错误。
118验证写入的切换参数值错误。
119系统不支持请求的命令。
120此功能只被此系统支持。
121信号灯超时时间已到。
122传递到系统调用的数据区太小。
123文件名、目录名或卷标语法不正确。
124系统调用级别错误。
125磁盘没有卷标。
126找不到指定的模块。
127找不到指定的程序。
128没有等候的子进程。
130试图使用操作(而非原始磁盘I/O)的已打开磁盘分区的文件句柄。
131试图移动文件指针到文件开头之前。
132无法在指定的设备或文件上设置文件指针。
133包含先前加入驱动器的驱动器无法使用JOIN或SUBST命令。
134试图在已被合并的驱动器上使用JOIN或SUBST命令。
135试图在已被合并的驱动器上使用JOIN或SUBST命令。
136系统试图解除未合并驱动器的JOIN。
137系统试图解除未替代驱动器的SUBST。
138系统试图将驱动器合并到合并驱动器上的目录。
139系统试图将驱动器替代为替代驱动器上的目录。
140系统试图将驱动器合并到替代驱动器上的目录。
141系统试图替代驱动器为合并驱动器上的目录。
142系统无法在此时运行JOIN或SUBST。
143系统无法将驱动器合并到或替代为相同驱动器上的目录。
144目录并非根目录下的子目录。
145目录非空。
146指定的路径已在替代中使用。
147资源不足,无法处理此命令。
148指定的路径无法在此时使用。
149企图将驱动器合并或替代为驱动器上目录是上一个替代的目标的驱动器。
150系统跟踪信息未在CONFIG.SYS文件中指定,或不允许跟踪。
151为DosMuxSemWait指定的信号灯事件个数错误。
152DosMuxSemWait不可运行。已设置过多的信号灯。
153DosMuxSemWait清单错误。
154输入的卷标超过目标文件系统的长度限制155无法创建另一个线程。
156接收进程已拒绝此信号。
157段已被放弃且无法锁定。
158段已解除锁定。
159线程标识的地址错误。
160传递到DosExecPgm的参数字符串错误。
161指定的路径无效。
162信号已暂停。
164无法在系统中创建更多的线程。
167无法锁定文件区域。
170请求的资源在使用中。
173对于提供取消区域进行锁定的请求不明显。
174文件系统不支持锁定类型的最小单元更改。
180系统检测出错误的段号。
183当文件已存在时,无法创建该文件。
186传递的标志错误。
187找不到指定的系统信号灯名称。
196操作系统无法运行此应用程序。
197操作系统当前的配置不能运行此应用程序。
199操作系统无法运行此应用程序。
200代码段不可大于或等于64K。
203操作系统找不到已输入的环境选项。
205命令子树中的进程没有信号处理程序。
206文件名或扩展名太长。
207第2环堆栈已被占用。
208没有正确输入文件名通配符*或?,或指定过多的文件名通配符。
209正在发送的信号错误。
210无法设置信号处理程序。
212段已锁定且无法重新分配。
214连到该程序或动态链接模块的动态链接模块太多。
215无法嵌套调用LoadModule。
230管道状态无效。
231所有的管道实例都在使用中。
232管道正在关闭中。
233管道的另一端上无任何进程。
234更多数据可用。
240取消会话。
254指定的扩展属性名无效。
255扩展属性不一致。
258等待的操作过时。
259没有可用的数据了。
266无法使用复制功能。
267目录名无效。
275扩展属性在缓冲区中不适用。
276装在文件系统上的扩展属性文件已损坏。
277扩展属性表格文件已满。
278指定的扩展属性句柄无效。
282装入的文件系统不支持扩展属性。
288企图释放并非呼叫方所拥有的多用户终端运行程序。
298发向信号灯的请求过多。
299仅完成部分的ReadProcessMemoty或WriteProcessMemory请求。
300操作锁定请求被拒绝。
301系统接收了一个无效的操作锁定确认。
487试图访问无效的地址。
534算术结果超过32位。
535管道的另一端有一进程。
536等候打开管道另一端的进程。
994拒绝访问扩展属性。
995由于线程退出或应用程序请求,已放弃I/O操作。
996重叠I/O事件不在信号状态中。
997重叠I/O操作在进行中。
998内存分配访问无效。
999错误运行页内操作。