B

1

点赞

0

回复

461

浏览

在开发中使用命令行界面

命令行概述 命令行——全称是命令行界面(Command Line Interface),和我们平时操作计算机的图形界面一样,也是一种人和计算机进行交互的方式。在图形用户界面得到普及之前被广泛使用,它通常不支持鼠标,而是通过键盘输入指令,计算机(操作系统)接收到指令后予以执行。 在命令行界面中,没有鼠标点击、拖动、双击、长按等方便使用的用户操作,通常需要用户通过键盘输入记忆在脑海中的各种命令。但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,在现在的图形用户界面的操作系统中,通常都保留着可选的命令行界面。 常见的命令行界面 Linux/Mac——bash, sh, zsh Windows——cmd.exe, PowerShell 在Linux/Mac下使用命令行界面,通常会在图形界面打开一个终端(Terminal,系统预定义软件),操作系统在终端中启动一个 bash 进程,接下来在终端中通过输入命令即可向计算机下达指令(当然Linux/Unix也可以不安装图形界面,直接启动一个终端)。在Linux(以Ubuntu操作系统为例)启动的终端界面如下图所示: 在Mac下打开应用中的 Terminal : 在Windows下(以Windows 7及以后的版本,PowerShell为例),在开始菜单中点击运行(更高版本的Windows中,使用 搜索程序或文件 ),在输入框中输入 powershell ,点击然后打开一个PowerShell窗口,在这个窗口中同样可以输入命令向计算机下达指令。 如果你的Windows版本早于Windows 7,我们强烈建议你升级到Windows 7或者更新的版本 Windows打开的Power Shell界面如下图所示: 快速使用命令行界面 在接下来的课程内容中,我们将要大量使用命令行界面(作为程序员,命令行也是居家旅行的必备技能),首先我们需要保证自己在编辑器/IDE中编写代码时能够迅速打开一个可以工作的命令行界面。 WINDOWS Windows 7: 开始菜单 运行(这一步可以使用 Windows Key + R 快速打开),然后输入 powershell Windows 8及更新版本:使用 搜索程序和文件 窗口(这一步可以使用 Windows Key + Q 快速打开),然后输入 powershell 搜索到Power Shell后回车确认,即可出现Windows PowerShell的窗口。在窗口中我们输入 pwd 命令来测试PowerShell是否正常工作: Windows PowerShell...

bashshell

1

点赞

0

回复

699

浏览

用 Cron 定时任务更新Mac壁纸

最近看到 Set Desktop to NASA Astronomy Picture of the Day https://www.macosxautomation.com/automator/apod/index.html 一文,这个OSX下的Automator脚本可以每天自动去NASA(美国宇航局)下载“每日一图”,并设置为桌面。居然有这么酷的事情!于是harttle按照这篇文章的指示,完成了这个脚本。 第二天早上发现壁纸自动更新时harttle真是兴奋不已,然而第三天壁纸却没有更新... harttle也找不到Automator的日志在哪里,后来发现日历中的Automator触发器失效了?无奈之下,harttle又回到了Linux Way:使用 Cron 定时任务更新壁纸。现在稳定多了! 下载壁纸脚本 !/usr/local/bin/bash...

vimbash

0

点赞

0

回复

765

浏览

Vim 多文件编辑:缓冲区

感谢 idear http://tianmaying.com/user/idear 网友的支持,现在把"Vim多文件编辑"的最后一篇文章更新上来了!本文介绍Vim下缓冲区(Buffer)的使用, 至于标签页(tab)、窗口(window)可以移步另外两篇文章: Vim 多文件编辑:标签页 http://tianmaying.com/tutorial/vim tabpage 和 Vim 多文件编辑:窗口 http://tianmaying.com/tutorial/vim window 引用Vim官方解释,缓冲区是一个文件的内容占用的那部分Vim内存: A buffer is an area of Vim's memory used to hold text read from a file. In addition, an empty buffer with no associated file can be created to allow the entry of text. vim.wikia http://vim.wikia.com/wiki/Buffers 先来回顾一下Tab,Window,Buffer的关系吧! 基于缓冲区的多文件编辑是Vim最为推荐的做法,Vim维护着你在当前打开的这些Buffer里的所有跳转, Ctrl+o 和 Ctrl+i 可以遍历这些光标位置(参考: 在Vim中进行快速光标移动 http://harttle.com/2015/11/07/vim cursor.html )。 但一个窗口内只有一个Buffer是处于可见状态的,所以Buffer的用法最不直观。 学习Vim就要克服那些不直观的操作!因为Vim本身就是基于CLI的,而我们相信CLI就是效率。本文便来总结一下Buffer相关的命令与操作。 打开与关闭 不带任何参数打开多个文件便可以把它们都放入缓冲区(Buffer): vim a.txt b.txt...

vimbash

0

点赞

0

回复

655

浏览

Vim 多文件编辑:窗口

标签页(tab)、窗口(window)、缓冲区(buffer)是Vim多文件编辑的三种方式,它们可以单独使用,也可以同时使用。 它们的关系是这样的: A buffer is the in memory text of a file. A window is a viewport on a buffer. A tab page is a collection of windows. vimdoc http://vimdoc.sourceforge.net/htmldoc/windows.html 本文主要介绍Vim窗口的创建与维护,另外两种编辑方式的使用可以参考: Vim 多文件编辑:缓冲区 http://tianmaying.com/tutorial/vim buffer 和 Vim 多文件编辑:标签页 http://tianmaying.com/tutorial/vim tabpage 。先上图: 打开关闭 使用 O 参数可以让Vim以分屏的方式打开多个文件: vim O main.cpp my oj toolkit.h...

vimbash

0

点赞

0

回复

884

浏览

Vim多文本编辑:标签页

多文件编辑的场景太常见了:代码比对、项目重构、模块构建... 最初harttle在碰到这些问题时直接转向IDE了,其实Vim不仅支持多文件编辑,而且支持多种风格:标签页(tab)、窗口(window)、缓冲区(buffer)等。 今天harttle就来介绍一下Vim强大的多文件编辑!本文介绍Vim标签页的使用,另外两篇文章在这里: Vim 多文件编辑:缓冲区 http://harttle.com/2015/11/17/vim buffer.html Vim 多文件编辑:窗口 http://harttle.com/2015/11/14/vim window.html 要做一个强大的IDE,除了多文件编辑技巧,你可能还需要 终端复用 http://harttle.com/2015/11/06/tmux startup.html 和 目录树 http://harttle.com/2015/11/04/vim ide.html 。 打开与关闭 标签页 http://vim.wikia.com/wiki/Using_tab_pages 是最常见的多文件编辑方式吧,熟悉IDE的小伙伴一定能很快上手! 使用 p 参数来用多个标签页启动Vim: vim p main.cpp my oj toolkit.h /private/etc/hosts...

vimbash

0

点赞

0

回复

849

浏览

打造前端开发的Vim环境

前不久harttle着手搭建了 类似IDE的Vim环境 http://tianmaying.com/tutorial/vim ide ,然而对于前端开发者这还远远不够。 本文便记录一下如何实现前端开发者关心的那些特性:不同文件类型的缩进、HTML标签匹配注释移除、HTML/CSS/Javascript自动补全、代码风格检查等等。让我们来打造一个适合前端开发的 Vim http://tianmaying.com/tutorials/tag/vim ! 文件类型设置 前端文件有不同的类型,而每个人对于缩进又有不同都要求。Vim中我们可以为每种文件设置不同的缩进和Tab行为。 查看当前文件类型 使用 :set filetype 命令可以查看当前文件的类型。例如: filetype=html.handlebars...

bashjavascripthtmlcssvim

0

点赞

0

回复

756

浏览

那些鲜为人知的Vim技巧

用拷贝的内容替换 当发生拼写错误或者想要重命名标识符时,就需要用拷贝的内容来替换当前的名字。比如调用函数时写错了: voidletus_fuckit_with_vim(){...

vimbash

1

点赞

2

回复

858

浏览

常见Linux命令

这是一篇手册文章,总结了常用的linux命令,以及它们的一些常用参数和场景。 SOURCE 执行某个文件,效果等同于 . ,都是在当前进程的上下文执行。 BASH 以bash执行某个文件,作为子进程。 x 参数可以查看调试信息。 GDB 用来调试C程序,打开一个调试: gdb a.out...

linuxbash

0

点赞

0

回复

670

浏览

感受Vim的强大:进阶技巧

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。 如果你还没有使用过Vim,建议你先去看这个: Vim初级:配置和使用 http://tianmaying.com/tutorial/vim 。本文介绍一些Vim的高级特性。包括块编辑、宏录制、语法高亮、键盘映射、函数定义、文件类型识别与对应插件加载等。 英文文档: http://vimdoc.sourceforge.net/htmldoc/,中文文档:http://vimcdoc.sourceforge.net/doc/ http://vimdoc.sourceforge.net/htmldoc/%EF%BC%8C%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%9Ahttp://vimcdoc.sourceforge.net/doc/ 块编辑 可视 模式: v 可进入visual模式,使用标准快捷键移动光标可选择文本块,之后可输入标准编辑命令。 列编辑 模式: v 进入列编辑模式,移动光标将按列进行选中。例如: 删除块注释: v 进入列编辑模式, ikjl 选中注释列, x 删除N个字符; 添加块注释: v 进入列编辑模式, ikjl 选中要注释的行, I 进入插入模式,输入几个注释字符, 推出列编辑。 vim所有的模式(即工作状态)如下: 1. (o) 普通模式: 输入命令时。 2. (x) 可视模式: 可视区域高亮并输入命令时。 3. (s) 选择模式: 类似于可视模式,但键入的字符对选择区进行替换。 4. (o) 操作符等待模式: 操作符等待中 ("d","y","c" 等等之后)。 5. (i) 插入模式: 也用于替换模式。 6. (c) 命令行模式: 输入 ":" 或 "/" 命令时。 行尾块 :因行尾参差不齐,块编辑一般用于行首、行间;行尾编辑要有一些技巧: gg 到文件头, 进入块编辑模式, G 选择所有内容; $A 到行尾并进入插入模式,输入要插入的字符, 完成。 文件类型识别与对应插件加载 Vim可针对特定的文件,加载指定插件。以此来实现文件类型的特殊配置以及语法高亮。 参见: http://vimcdoc.sourceforge.net/doc/filetype.html filetype plugins http://vimcdoc.sourceforge.net/doc/filetype.html filetype plugins filetype on 将开启文件识别,Vim 会在载入时做如下工作: 1. 执行 $RUNTIMEPATH/filetype.vim ,根据文件名判断类型 2. 如果需要的话,执行 $RUNTIMEPATH/scripts.vim ,进一步判断文件类型 3. 设置 Vim 的 filetype 变量 我们也可以通过诸如 :set filetype=c 的命令来手动设置文件类型 如果不使用文件识别,我们可以运行 au BufNewFile,BufRead .plt source ~/.vim/after/ftplugin/plt.vim 来使用 plt.vim 初始化 .plt 文件。 更多关于 RUNTIMEPATH : http://vimcdoc.sourceforge.net/doc/options.html 'runtimepath http://vimcdoc.sourceforge.net/doc/options.html 'runtimepath ' filetype plugin on 允许Vim加载文件类型的插件,Vim会在载入时寻找并加载 $RUNTIMEPATH/ftplugin.vim ,该脚本会寻找并加载 $RUNTIMEPATH/ftplugin/ .vim 。 例如: ~/.vim/ftplugin/cpp.vim 将在 cpp 文件类型被识别后自动载入。 同样, ~/.vim/after/ftplugin/cpp.vim 会在最后被调用,进而覆盖之前的配置。 另外, filetype indent on 允许Vim加载该文件类型的缩进设置。即执行 RUNTIMEPATH/indent.vim 。 语法高亮 syntax on 允许 Vim 加载文件类型的语法高亮配置,Vim会在载入时寻找并加载 RUNTIMEPATH/syntax/ .vim 。 例如: ~/.vim/syntax/markdown.vim 将会对文件类型 markdown 进行语法高亮。 键盘映射 Vim支持定义键盘映射来完成快捷键的功能,也就是将特定的按键映射为一系列按键与函数的序列。 例如将 F7 映射为编译当前java文件: map :!javac % ...

vimbash

0

点赞

0

回复

568

浏览

熟悉 Bash 快捷键来提高效率

Bash http://www.gnu.org/software/bash/ 是GNU计划的一部分,是多数Linux发行版提供的默认Shell。 Linux的精髓就在于命令行的高效,而学习命令行的第一步便是学习如何快速地输入命令。 其实包括Bash在内的多数Linux Shell都是使用一个叫 GNU Readline Library http://tiswww.case.edu/php/chet/readline/rltop.html 的库来接受用户输入。 所以这些快捷键在多数Shell下都适用~ 命令编辑 快捷键 描述 Ctrl + a go to the start of the command line Ctrl + e go to the end of the command line Ctrl + k delete from cursor to the end of the command line Ctrl + u delete from cursor to the start of the command line Ctrl + w delete from cursor to start of word (i.e. delete backwards one word) Ctrl + y paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor Ctrl + xx move between start of command line and current cursor position aand back again Alt + b move backward one word (or go to start of word the cursor is currently on) Alt + f move forward one word (or go to end of word the cursor is currently on) Alt + d delete to end of word starting at cursor (whole word if cursor is at the beginning of word) Alt + c capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word) Alt + u make uppercase from cursor to end of word Alt + l make lowercase from cursor to end of word Alt + t swap current word with previous Ctrl + f move forward one character Ctrl + b move backward one character Ctrl + d delete character under the cursor Ctrl + h delete character before the cursor Ctrl + t swap character under cursor with the previous one历史命令 快捷键 描述 Ctrl + r search the history backwards Ctrl + g escape from history searching mode Ctrl + p previous command in history (i.e. walk back through the command history) Ctrl + n next command in history (i.e. walk forward through the command history) Alt + . use the last word of the previous command命令控制 快捷键 描述 Ctrl + l clear the screen Ctrl + s stops the output to the screen (for long running verbose command) Ctrl + q allow output to the screen (if previously stopped using command above) Ctrl + c terminate the command Ctrl + z suspend/stop the command Ctrl + d end of input参考链接: http://www.skorks.com/2009/09/bash shortcuts for maximum productivity/ http://www.skorks.com/2009/09/bash shortcuts for maximum productivity/ http://ss64.com/bash/syntax keyboard.html http://ss64.com/bash/syntax keyboard.html 同时发表在: http://harttle.com/2015/11/09/bash shortcuts.html http://harttle.com/2015/11/09/bash shortcuts.html ...

快捷键bash

0

点赞

0

回复

638

浏览

Vim中如何快速进行光标移动?

Vim最大的特征与最大的困难就是纯键盘操作,所以快速移动光标是Vim的最基本技能。我接触Vim也有四个年头了, 曾经由于项目重构操作频繁而切换到了WebStorm,最近又由 WebStorm 切换到了 Vim http://harttle.com/2015/11/04/vim ide.html 。 始终感觉光标移动是最大的痛处,同时又能从键盘操作获得极大的快乐。 下文便开始介绍那些常用的快捷键,先上图! 最近感受光标移动技能又一次升级了!来回顾一下我的Vim光标升级过程吧: 1. 只会上下左右和插入( h , j , k , l , i )。所有操作都由这5个键来完成。这时候用Vim的键盘声因简直像打Dota一样。我大概持续了一个月。 2. 学会了单词移动和文件头尾( w , b , $ , ^ , gg , G )。这时编辑起来不那么费力了,看起来还可以。这一阶段持续了两年...这两年里我学会了正则查找和替换( /xx , %s/xx/xx/g )。 3. 能够熟练地滚屏( zz , zt , zb , c f , c b )、标识符间来回移动、按屏幕移动光标( H , L , M )、窗格间移动( c w hjkl )。这是最近一年的水平,同时还学会了宏录制、列编辑等。 4. 下一阶段:熟悉段落与单词间跳转,熟悉数字的使用。比如对于 func(args, count) ,我要记住从行首到第二个参数的快捷键是 4w 。 如果你还没有接触过Vim,可以从 这里 http://harttle.com/2013/11/08/vim config.html 开始。 字符移动 在Vim的Normal模式里(如果你在Visual模式或者Insert模式,可以按 回到Normal模式), 通过 h , j , k , l , i 来进行左下上右的光标移动。 在Vim中多数操作都支持数字前缀,比如 10j 可以向下移动10行。 单词移动 多数情况下单词移动比字符移动更加高效。 w 移动光标到下一个单词的词首, b 移动光标到上一个单词的词首; e 移动光标到下一个单词的结尾, ge 移动光标到上一个单词的结尾。 单词移动同样支持数字前缀,比如 4w 可以向后移动4个单词。连续的标点符号算一个单词。 有趣的是, W , B , E 具有同样的功能,只不过它是用空格来分隔单词的,可以跳地更远~ ^ 到行首, $ 到行尾。 拷贝一行: ^y$ 。 相对屏幕移动 通过 c f 向下翻页, c b 向上翻页。这在几乎所有Unix软件中都是好使的,比如 man 和 less 。 H 可以移动到屏幕的首行, L 到屏幕尾行, M 到屏幕中间。 zt 可以置顶当前行,通常用来查看完整的下文,比如函数、类的定义。 zz 将当前行移到屏幕中部, zb 移到底部。 文件中移动 通过 :10 可以直接移动光标到文件第10行。如果你看不到行号,可以 :set number 。 gg 移到文件首行, G 移到尾行。 拷贝整个文件: ggyG 。 /xx 可以查找某个单词 xx , n 查找下一个, N 查找上一个。 在光标跳转之后,可以通过 c o 返回上一个光标位置, c i 跳到下一个光标位置。 ?xx 可以反向查找, q/ , q? 可以列出查找历史。 同时发表在: http://harttle.com/2015/11/07/vim cursor.html http://harttle.com/2015/11/07/vim cursor.html ...

bashvim

新建主题 记录代码

学员动态

  • 天码君回复了A**i在课程中的问题:欢迎来到天码营学习,...
  • J**y向课程作业中提交了代码
  • z**x在课程中提出了问题:请问下老师,安装的时...
  • D**n向课程作业中提交了代码
  • h**2向课程作业中提交了代码
  • D**n向课程作业中提交了代码
  • L**z在课程中提出了问题:老师,刚才我换了一个...
  • w**3评论了z**x在课程中的作业:...
  • z**x在课程中提出了问题:哇,我换成课程里的压...
  • J**y向课程作业中提交了代码
  • w**3回复了L**z在课程中的问题:你如果要用java1...
  • J**y向课程作业中提交了代码
  • 三年添加了笔记:需要修改MyBati...
  • A**i向课程作业中提交了代码
  • 天码君回复了L**z在课程中的问题:欢迎来到天码营学习,...
  • 三年添加了笔记:关于MyBatis本...
  • J**y向课程作业中提交了代码
  • J**y向课程作业中提交了代码
  • c**u评论了:13课实战弄不明...
  • w**3回复了L**z在课程中的问题:嗯,毕竟几乎公司和学...
  • D**n向课程作业中提交了代码
  • 三年添加了笔记:接下来引入MyBat...
  • 三年在课程中提出了问题:请老师解答下这课作业...
  • A**i向课程作业中提交了代码
  • J**y向课程作业中提交了代码
  • h**2向课程作业中提交了代码
  • f**e向课程作业中提交了代码
  • J**y向课程作业中提交了代码
  • A**i向课程作业中提交了代码
  • z**x添加了笔记:public sta...
  • w**3评论了z**x在课程中的作业:对的,一般是在包下的...
  • A**i向课程作业中提交了代码
  • 三年添加了笔记:分析我们的业务场景,...
  • 天码君回复了A**i在课程中的问题:欢迎来到天码营学习,...
  • z**x在课程中提出了问题:老师我把Java换成...
  • z**x在课程中提出了问题:对应版本?我的JDK...
  • 天码君回复了z**x在课程中的问题:欢迎来到天码营学习,...
  • 工**武在课程中提出了问题:请问为什么课程的视频...
  • w**3评论了D**n在课程中的作业:看清楚要求,参数表要...
  • A**i向课程作业中提交了代码
  • 天码君回复了工**武在课程中的问题:欢迎来到天码营学习,...
  • D**n向课程作业中提交了代码
  • L**z在课程中提出了问题
  • 三年添加了笔记:先来定义Mapper...
  • w**3回复了z**x在课程中的问题:百度找一下如何彻底删...
  • z**x在课程中提出了问题:老师我的电脑是64位...
  • z**x在课程中提出了问题:好的老师,那版本11...
  • w**3评论了z**x在课程中的作业:这是一个类的主体部分...
  • D**n向课程作业中提交了代码
  • 天码君回复了h**2在课程中的问题:欢迎来到天码营学习,...
  • z**x在课程作业中回复了老师:所以说包的作用就像是...
  • L**z向课程作业中提交了代码
  • L**z向课程作业中提交了代码
  • z**x在课程中提出了问题:老师,为什么它那个中...
  • 天码君回复了D**n在课程中的问题:欢迎来到天码营学习,...
  • z**x在课程作业中回复了老师:入门到精通这本我今天...
  • L**z向课程作业中提交了代码
  • w**3评论了z**x在课程中的作业:这个是根据你的jav...
  • R.D完成了课程的作业
  • z**x评论了:安装的时候出现这个界...
  • A**i向课程作业中提交了代码
  • L**z向课程作业中提交了代码
  • w**3回复了z**x在课程中的问题:软件安装问题每个人碰...
  • 三年添加了笔记:这里你注意两点即可:...
  • w**3回复了z**x在课程中的问题:安装java8 不要...
  • 三年在课程作业中回复了老师:老师,我的代码中报这...
  • 天码君评论了三年在课程中的作业:你的代码应该是可以跑...
  • z**x在课程作业中回复了老师:所以说,是要先创建包...
  • 天码君回复了X**E在课程中的问题:欢迎来到天码营学习,...
  • 天码君回复了s**n在课程中的问题:欢迎来到天码营学习,...
  • w**3回复了z**x在课程中的问题:重新安装对应版本的e...
  • 天码君回复了R.D在课程中的问题:欢迎来到天码营学习,...
  • D**n在课程作业中回复了老师:这道题是什么意思? ...
  • 天码君回复了D**G在课程中的问题:欢迎来到天码营学习,...
  • 白**2向课程作业中提交了代码
  • h**2向课程作业中提交了代码
  • A**i完成了课程的作业
  • 天码君回复了c**h在课程中的问题:欢迎来到天码营学习,...
  • L**z在课程中提出了问题:好的那我还是装回我的...
  • w**3回复了z**x在课程中的问题:可以设置字体 htt...
  • z**x添加了笔记:将希望输出信息放到S...
  • z**x在课程作业中回复了老师:想请问下老师这行代码...
  • A**i向课程作业中提交了代码
  • L**z向课程作业中提交了代码
  • L**z向课程作业中提交了代码
反馈意见