Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5731
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-10 21:33
文章分类
文章存档

2013年(3)

我的朋友
最近访客

分类: LINUX

2013-12-10 21:40:20

 在我的工作中,我总是在寻求能进步消费力,和让开发更有趣的办法。当你在bash上飞快输入一系列的命令,你晓得你的朋友会花两倍的时间来做这一些列操作,没有什么比这个让人觉得更好的了。你能否曾经:
  心里默默地抱怨你的同事,为了到命令行的头部,不时地按左方向键。但其实你能够只需求按下CTRL + A就能到达目的 ?
  看到某人一次又一次输入相同的命令,而你能够只需求在它面前加一个! ?
  当你的朋友罗列他运用的IDE的各种优点的时分,你能否会翻白眼,由于你晓得你能够运用vim完成同样的功用?
  假如是这样的话,下面这些小提示就很合适你。
  声明:这篇文章不是对vim,git和其他终端的成见。我无意挑起终端和IDE的战争,只是想通知一些对我来说很有趣的招数。
  git add -p
  假如你曾经运用git很长一段时间了,你很可能遇到过原子提交这个概念了。实质上,这个概念指一次提交只包含相关操作,不包含逻辑上不相关的事情。例如,你对一个类的改动和相关的单元测试应该在一个提交中,而对另一个不同类的操作你应该放在另一个提交中。
  但是,假如在一个文件中包含多个不相关操作的时分应该怎样办,或者你会想要把他们放在多个提交中,这样你能够单独对他们 停止revert操作?或者你在一个文件中写了很多log日志的语句,但是你不希望将这些语句提交到项目中去怎样办?通常人们运用的git命令是达不到这 个请求的:
  $ git diff diff --git a/some-file.c b/some-file.c index f383179..09e4e35 100644 --- a/some-file.c +++ b/some-file.c @@ -2,6 +2,8 @@ int main(void) { printf(\"doing some stuff\\n\"); - printf(\"doing some more stuff\\n\"); + do_some_stuff(); + printf(\"doing some unrelated stuff\\n\"); + do_some_unrelated_stuff(); return 0; } $ git add some-file.c $ git commit [master 1938906] some unrelated stuff, cramming it all in one commit \'cause I\'m lazy 1 file changed, 3 insertions(+), 1 deletion(-) $ echo \"Whoops we just committed unrelated stuff. Not very modular of us.\"有用吗求真相
  git add的 -p (代表patch)参数关于这种场景是十分有用的。这个会通知git add,我想要做一个特殊的add操作,并且这个命令有个十分好的交互界面能让我们明白指定我们想要操作文件中的哪个局部。git会将一切的变动自动分 块,你能够运用y或者n来经过或者回绝这个分块,或者你也能够运用s将它切成更细粒度的块。假如git不能自动将变动分红你希望的块的话,你能够运用 e(edit)选项来指定更多细节。

  这个帖子中有更多关于git add -p的细节:How can I commit only part of a file in git ()
  补充阐明:一些评论指出,-p参数也能够和其他的一些命令,比方git check –,在一同运用。因而你能够将文件的一局部恢复回来,而坚持其他的局部的变化。很便当吧!
  vim的 CTRL-P/CTRL-N 自动完成的功用
  这是vim的杀招之一,并且我发现很多人(即便是vim的巨匠)都不是很经常运用。假设你是个马虎的用户(当ssh进入 一个空间的时分运用vim去编辑一些配置文件),这招会潜在帮到你很多的。很多人宣称他们不能放弃IDE的特性缘由就是IDE的智能提示这项功用,这个功 能能自动完成变量和函数的名字。这些特性是十分受欢送的,由于它不会让我们由于拼写而呈现错误,也缩短了编译/运转/调试的周期。许多人没有认识到直接从 vim的黑盒子中也有相似的功用,而且是不需求任何插件的。
  在INSERT形式下,你能够按下CTRL-N键下移倡议的自动完成下拉框(这个下拉框vim是从当前缓冲中获取,假如 有的话,也会从tags中获取),或者按下CTRL-P键来上移(假如记不住助记符的话,记着这两个分别是代表“NEXT”和“PREVIOUS”)。如 果只要一个可能的自动完成条目,vim就会继续输入,然后插入这个独一的条目。十分便当且有效率,特别当你的代码中有大量的长变量/办法/常量称号的时 候。
  CTRL-P/CTRL-N能够和下个招数一同协同工作,详细运用和上面章节说的一样

  丰厚的ctags
  运用vim的人都晓得翻开一个远间隔目录中的文件是很费事的(能够运用:e 来减缓费事水平,但是依然不能霎时做到)。假如你正好是在一个team中工作,或者在一个大项目中工作,疾速完成这个事情对你的工作来说是至关重要的。
  丰厚的ctags()会让这个世界变得更好。运用ctags,你能够在顶级目录下跑一个命令,生成一个”tags”文件,然后,你就能够运用Ctrl-] 来“跳到” 你鼠标制定的定义(比方说,一个类名)。按CTRL-T回到你之前的位置。
  你能够在git中搭建一个提交后钩子()当你提交代码之后会自动生成ctags文件!漂亮。
  在bash和zsh中CTRL-R
  能否有曾经在终端输入过一个命令,然后当你再次输入前几个字的时分,你会忽然发现,你希望有个更烦琐的办法能自动补充完 整个命令,以便你能编辑或者再次运转它?假如是这种状况的话,那么,通知你个好音讯:你能够!只需求按下CTRL+R 然后输入你想要查询的东西。终端将会将你想要的填充进去,假如有多个选择的话,你能够按下重复按下CTRL+R来停止选择。当你发现了你需求的命令,你可 以运用通常的操作来操作这个命令(假如你运用规范的bash键绑定的话,你能够运用CTRL+A,CTRL+E,方向键等。)。试试吧!假如你不记得你要 ssh的机器,运用这个办法你会觉得到很便当。

  history| grep $COMMAND 对你来说也十分有用的,假如你只是想要查看最近运转的命令的话。
  vim 宏
  许多时分,当你写代码或者做相关任务的时分,即便可能只是十分微小的操作,你也会发现你本人十分需求一个办法来一遍一遍反复相同的编辑命令。不同的开发者会运用不同的办法来到达这个目的。例如,SubLime Text()有个“杀招”是放多个光标在不同的位置,然后统一编辑。在Vim(在emacs也一样,但是我们这里只引见vim的办法),你能够运用记载和回放来完成这个目的。这是个十分有用且便当的工具,它会依据你的操作量的大小在不同水平加速你的代码写作速度。
  要制造一个宏,在normal形式下按下q,然后按下其他的按键来“命名”宏(通常我运用q)。vim将会开端记载你的 键盘操作,vim将会记载你的键盘操作,晓得你按下了q来保管宏。你能够在normal形式下运用@-letter来重放,所以我通常运用@-q。你也可 以在@重放命令前加个数字,这样,你能够一遍又一遍反复执行你的宏(就像许多vim运用者,曾经十分习气来这样做了)。假如你十分习气运用vim的花哨的 操作命令(例如,运用/搜索来定位),然后你只需求一些小小的联络,你就能够很快地操作大量的宏了,你会将你的还在依托鼠标停止操作的同事远远甩在后面 了。
阅读(244) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Unix在现代数据中心的份额与角色是什么?

给主人留下些什么吧!~~