谢谢,你写的太棒,太详细了!!!
不过有一点貌似不对,也是之所以我有这个问题的缘故,引用 Progit 中的一段话:
You can create your own tree. Git normally creates a tree by taking the state of your staging area or index and writing a tree object from it. So, to create a tree object, you first have to set up an index by staging some files. To create an index with a single entry — the first version of your text.txt file — you can use the plumbing command update-index.
你把建立树对象的这个步骤延后到提交 commit 之后,但是应该是 add 之后,这个树对象已经存在了。只不过不是以 objects 下 可见的形式存在的。但是 git 有办法获取他的 sha1 (这里指的是那个入口), 否则,git diff --cached, 就没办法工作了。我觉得一定有一个 sha1, 也许就在那个 .git/index 文件内。
我理解错了,哈哈~~ 我又细细看了下,貌似就是你说的那样~~
再说下之前的需求,以前 git diff 总是以 `单文件' 的形式,打开代码比较工具,常常是打开一堆 TAB, 一点都不直观,我要这个 SHA1, 最初,我是希望通过 git archive 的方式,打包成 tar, 然后直接比较 tar 文档的目录结构,一目了然。不过后来发现,获取 index 以及 获取当前目录下的文件 (所有被索引文件以及除去所有被 ignore 文件这两步不太好搞), 所以,最后我干脆用拷贝到临时目录的形式来实现了。所以这个需求也就解决了。
不行,无效的 SHA1
楼主是一个让我佩服的人,很早的时候,我记得楼主给代码让我至今印象深刻。
不过对于 Mac , 楼主可能并不了解 Linuxer 所说的问题在那里。
首先对一句话表示不解:
只喜欢用 Mac 自带的 Terminal,功能足够够用了,我的效率非常的高,因为我把精力都放在工作上,而不是配置上,我不需要太多的功能,我只要一个简单的操作环境,这样我更能专注于工作,软件并不需要太多复杂的功能,那些都是累赘,简化人的操作,不正是软件最初的目地吗?
给我的感觉,你是一个关注于 真是效率,然后喜欢 CLI 的人,如果如你所说,更专注于工作,而且喜欢 CLI, 那么 Linux 谁说不是更好的选择呢?大把的图形界面,华丽胡哨的东西,只会让你分心,让你去娱乐,让你去陶醉。
我猜测最大的问题是:苹果底层使用的不是 Linux, 而是 FreeBSD, 这也就罢了,貌似,苹果专注的地方并不是让 FreeBSD 更多的去兼容 Linux, 而是在 GUI 方面提供更好的 Feeling. 这是作为一个 Unix Like 开发人员期望看到的吗?毕竟你不是普通使用者。
Linux 和 FreeBSD 我估计已经有很多的不同了,大多数开源软件都是 Linux 下开发的。我不相信,把 Linux 下面的一个包,拿到 Mac 编译有你说的那么方便。苹果那么自大的公司,怎么可能把其他自大的大神的东西 (我指的 Linus 和 Stallman), 更何况 (据说,我没验证), Mac 版的 FreeBSD 已经和传统的 FreeBSD 差别已经很大了吧。
当然你要非说 且图,Photoshop , 甚至优秀的第三方软件 之类的,Mac 当然好了,不过,就不在于程序员写代码
这个范畴了。
最后结论是:如果关注于 Mac 开发的生态链,那当然非 Mac 不用了。如果你非要用 Linux 下原生的东西,例如 C 而不是 Object C, 甚至是 Ruby 而不是 MacRuby, 如楼主这样专注于开发效率的人,至少没有任何理由说:Mac 比 Liunx 好太多!, 因为如果如你所说,两者效率应该一样,甚至 Linux 会给你更多,更纯粹,让你更专注于工作的选择。
BTW: 还有一个个人的选择,就是习惯小红点。
谁敢说对于纯开发人员
来说,小红点效率比 Mac 的触摸板差?至少我八个指头,几乎不用离开 ASDF JKL;
...
靠,有关递归的描述,我前几天刚发过一个贴,讨论。
很明显,我之前就属于那种:
对递归的效率也有很大的误解,认为递归没有循环来得高效。
我觉得 rails 中,尤其是 大把的 gem 中,很多都是 新瓶装老酒
, 这是一个很严重的问题。屁大点功能,就是一个 gem, 这对于 Rails 初学者很不利。
来来回回 gem 之间的依赖,组合,再加上彼此之间的冲突,所花的时间,其实有时候远比自己来实现花的功夫多。当然,我指的是那些 小gem
, 当然有很多很不错的 gem, 功能强大,经过严格测试,不过不太少了。
又是王垠,在我刚开始用 Emacs 那会儿,搜索中文 Emacs 资料,时常会看到这个名字。
你如果在 Window 下用,Emacs Server 是无效的。
如果在 Linux 或 Mac 下,Emacs Server 就是先启动一个 Emacs Deamon, 然后稍后运行 Emacs 不是通过 Emacs
这个命令了,因为 Emacs 作为一个 Deamon
已经被启动了,只需要运行任意多个 emacsclient
连接到那个 Emacs server 就可以启动一个 Emacs 窗口,最大的优势是:秒开, 速度可比 Vim 快多了。
Emacs23 之前最让人诟病的一个原因是 Emacs 启动慢,不过现在变成优点了. 前面讲的不准确,之前这个最大的缺点在 Emacs23 之后就不再存在了,相反,因为 daemon 的缘故,启动速度非常快,反倒成为 Emacs 的优点了
嘿,我在 21 楼 说的问题,不知道描述清楚没有?
不知道能否通过改 second-sel 源码实现一个全局的 secondary-kill-ring ?
#18 楼 @reus
个人表示,只要找对E文的关键字
, Google 结果就没有压力...
有时候,找关键字不是那么容易呀。毕竟又不是中文,就算中文,还不一定找到呢。
#19 楼 @doitian 好一阵子都常见你上线,貌似最近有空呀?
正好向几位请教一个还算蛮棘手的问题:@willmouse @doitian @reus
现在我 C-w 快捷键,是复制内容到 secondary-region-ring,(就是和 kill-ring 一样的另一个 ring) 这其中使用了一个插件叫做:second-sel.el 来实现的一个 ring, 之所以这样绑定,是因为:C-w 之后,可能还会有 backward-kill-word, kill-line 之类的操作,这个时候,我可以不受干扰的通过一个自定义快捷键 C-M-y, 来直接粘帖 secondary-region
中的内容。
现在问题是:secondary-region-ring, 只要一退出 buffer, 再重新打开,ring 里面的内容就没有了。有时候,我希望复制一段内容到 second-region-ring 当中,哪怕我退出 buffer, 但是在稍后的其他新打开的 buffer 当中,都可以被 反复的 通过 C-M-y 粘帖。
反正就这么个功能,正常的删除,粘帖,就用 kill-ring, 但是最好有一个 其他的 (全局的)ring, 专门使用 C-M-y 来粘帖, 目前我用的这个 second-sel.el 中,这个 secondary-region-ring 不是全局的。只要一退出 buffer, 内容就消失了。
我要解决的问题是:
如果我希望更改 second-sel.el , 将那个 local ring 改为 global ring , 思路该如何解决?(最好谁有空帮我改下也行,如果能实现的话)
类似需求你们是如何处理的?是否有其他插件?或者自己写的插件?我想遇到一个 需要反复粘帖的情形,没有人愿意没完没了的 M-y 去吧?
貌似你说的那个 awesome 应该就是,我曾经想安装,不过貌似 Slackware 不满足的依赖太多了... 我不想因为这个小工具,再装一堆东西,呵呵,所以没装。
没问题呀。可是无法完全发挥 Server 的优势,如果不是 Terminal, 也就用不到 dvtm 之类的东西了。
不过只开一个终端也有好处,就是不太乱,像我,有时候在一个桌面下开 EmacsClient 太多,头就晕了。
#10 楼 @reus 我最近才开始用 tabbar, 不过只是在 shell-mode 下 才开启。换多个 shell 方便一些。
对了,问下你们,在 X-windows 下,用一个快捷键,将当前打开的所有 Windows , 上下对齐重排,或者左右重排,类似的软件叫什么。最好是独立于 具体的 Windows 管理器,就像 Xbindkeys 一样,不管 KDE, 还是 Gnome, 又或者 XFCE, 都可以用。
然 Emacs 个人使用方式非常多样化,不过咱们大家还是应该多多沟通呀,上次其他帖子中 @reus 的提示,帮我解决了 shell-mode 下的几个大问题。
Terminal 下也没什么不妥,就是有些快捷键 (个人特殊的), 在终端下面,好像有具体的绑定,无法单独使用。
另外,习惯问题吧,我觉得使用 GUI 可以更好的发挥 deamon 的效果,这点应该没有异议吧?
你们使用 Terminal, 习惯上应该是 大部分 Emacs 操作 都在同一个 Emacs 界面 下面运行的吧?要大量的借助 ido, helm 之类的软件,切换文件什么的。我是经常运行一大堆 Emacs GUI (frame), 然后 Alt + Tab 切换 ( Windows 过来的习惯 ), 当然 ido 也用。
总之我觉得在 Terminal 下使用 Emacs, 纯粹发挥不出来 Emacs Server 的好处,和在 Windows 下使用 Emacs 基本上没有啥差别,要开一个新的 Emacs 界面,还得首先开一个新的 Terminal, 是这样的吧?
我估计你们都是 Emacs 老用户吧,应该在 Emacs 22 的时候就在用了 (Emacs 22 不支持 daemon) , 所以会有现在的习惯,不知道我猜测的对吗?