琐碎知识

GIT

  1. 查看 git 被追踪的所有文件:From
  • master 分支
git ls-tree -r master --name-only
  • 当前分支
git ls-tree -r HEAD --name-only
  • git仓库clone默认只下载master分支,如果要抓取远程仓库其他分支,使用如下命令:
//抓取远程仓库dev分支代码
git check -b dev origin/dev
  • git推送到远程仓库origin
//推送本地master到远程仓库origin/master
git push origin master
//推送本地dev到远程仓库origin/dev
git push origin dev

//删除远程分支关联
git remote rm origin
//关联远程分支
git remote add origin git@github.com:?????/????

有时候git add xxx无法生肖,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v App.class
.gitignore:3:*.class    App.class
  • git 撤销本地修改
  1. 如果本地修改未暂存:git checkout -- file
  2. 如果本地修改已提交到暂存区:
//把暂存区的修改撤销掉(unstage),即回退到工作区
git reset HEAD file
//撤销工作区修改
git checkout -- file


Gradle

  1. 使用 bintray-release上传某一个 module
    gradlew clean build module:bintrayUpload -PbintrayUser=why8n -PbintrayKey=BINTRAY_KEY -PdryRun=false
  • 依赖方式
/* 单个依赖 */
compile group:'log4j', name:'log4j', version:'1.2.17'
// 简写 => compile 'log4j:log4j:1.2.17'
 
/* 以数组形式添加多个依赖*/
compile 'joda-time:joda-time:2.9.2', 'log4j:log4j:1.2.17'
 
/* 闭包形式,以添加额外配置*/
compile (group:'log4j', name:'log4j', version:'1.2.17'){
    // ... 额外配置
}
/* 等价于 */
compile ('log4j:log4j:1.2.17'){
    // ... 额外配置
}
  1. Provided 和 annotationProcessor区别 以及 compileOnly 的使用
  • annotationProcessor
    只在编译的时候执行依赖的库,但是库最终不打包到apk中,
    编译库中的代码没有直接使用的意义,也没有提供开放的api调用,最终的目的是得到编译库中生成的文件,供我们调用。
annotationProcessor 'com.whyn:injectmanifest-compiler:1.0.0'
  • provided,Android studio3.0中替换为 compileOnly
    provided 虽然也是编译时执行,最终不会打包到apk中,但是跟apt/annotationProcessor 有着根本的不同。
  1. A 、B、C都是Library。
  2. A依赖了C,B也依赖了C
  3. App需要同时使用A和B
  4. 那么其中A(或者B)可以修改与C的依赖关系为Provided

A 这个 Library 实际上还是要用到 C 的,只不过它知道 B 那里也有一个 C,自己再带一个就显得多余了,等app开始运行的时候,A 就可以通过B 得到 C,也就是两人公用这个 C。所以自己就在和 B 汇合之前,假设自己有 C。如果运行的时候没有 C,肯定就要崩溃了。

总结一下,provided 是间接的得到了依赖的Library,运行的时候必须要保证这个Library的存在,否则就会崩溃,起到了避免依赖重复资源的作用。

  • compileOnly
    compileOnlyannotationProcessorprovided 差不多,也是只在编译期进行依赖,只是 compileOnly 是用于 Java 项目(Java 插件默认集成这个功能),而annotationProcessorprovided 是用于 Android 项目。
//annotation processor module: build.gradle
compileOnly project(':injectmanifest-annotations') //only runs in compile time

//app: build.gradle
annotationProcessor project(':injectmanifest-compiler')
provided project(':injectmanifest-annotations') //assume app compile module injectmanifest-annotations,because module injectmanifest-compiler already compile injectmanifest-annotations

更多依赖配置信息,请查看:
Android Studio3.x新的依赖方式(implementation、api、compileOnly)


Vim

vim:
dt) -- 删除到)(不包含))
df) -- 删除到)(包含))

查找文件
.vimrc --> set path+=**
:find xxx

查看当前文件名:
:echo expand("%") or <Ctrl>+g

补全
^x^n -- auto complete in this file
^x^f -- for filename
^x^] -- for tag only
^n -- for anything specified by the "complete" option

: % 起始和结束范围是整个文件
:%d 删除掉整个文件内容,d是delete简写
:!javac % %表示当前文件

' ——上一次跳转前的位置
" ——上一次退出文件时的位置
. —— 上一次修改的位置
[ ——上一次修改的开始处
] ——上一次修改的结尾处

normal 模式下,在路径处,输入gf就会跳转到对应文件内,<C-o> 回退到原先文件,<C-i> 回到前一个文件。

我们所输入过的EX命令,vim都会自动的保存下来,在普通模式下输入 q:

:help key-notation 查看 key mapping

不允许修改文件(只读模式)::set nomodifiable == set noma
可以修改文件(读写模式):set modifiable == set ma

vim编码涉及的基本概念
encoding变量:该选项使用于缓冲的文本(你正在编辑的文件)、寄存器、Vim脚本文件等等。你可以把 ‘encoding’ 选项当作是对 Vim 内部运行机制的设定。
encoding变量的默认值与系统当前locale相同。
fileencoding变量:该选项是vim写入文件时采用的编码类型。
vim打开文件时自动辨认其编码,fileencoding就为辨认的值。为空则保存文件时采用encoding的编码,如果没有修改encoding,那值就是系统当前locale了。
termencoding变量:该选项代表输出到客户终端(Term)采用的编码类型。
默认空值,也就是输出到终端不进行编码转换。

vim:
删除空行:g:/^\s*$/d
解释:^ 行开头
\s: 非字符
*: 0个或多个
$: 行结尾
综合:0个或多个非字符开头,一直到行结尾

vim command模式执行normal模式命令:
:execute "normal! mqA;<esc>`q"

vim command 模式执行函数:
:echo has('gui_running')

如果写脚本时,有重要的消息要显示给用户,需要使用 echomsg 或者 echoerr 这个两个命令。它们显示的消息都会记录在 message-history 里面。前者用于普通消息,后者用于错误。
那么想要完整显示信息,则输入::message

不退出编辑界面就可以在只读模式下强制将当前内容以管理员权限输入到当前文件::w !sudo tee %

删除 DOS 的换行符 ^M::%s/\r//g

了解 vim script 的基本语法( vim 里输入 :help usr_41.txt )。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • 调用下面的方法,得到的返回值是什么? 代码在走到第 3 行的时候遇到了一个 MathException,这时第四行...
    某学渣阅读 552评论 0 1
  • 关于HTML一些琐碎知识 html vs xml vx xhtml HTML ,超文本标记语言,语法比较松散、不严...
    来人啊都给朕退下吧阅读 154评论 0 1
  • 1、使用动画切换window的根控制器 2、KVO高级用法 适用于NSArray,可以实现对数据元素的求和、最大值...
    半边枫叶阅读 1,311评论 3 3
  • 我苦苦追寻 太初之力在东方升起 我上下求索 斗转星移的痕迹 天的尽头还是天? 梦的外面还是梦? 人的头顶悬着利剑?...
    不无草堂主人阅读 266评论 3 4
  • 2017年的暑假,我和弟弟都决定晚些回家,这也意味着我俩相处的时间也就20天。半年回家一次,见面20天,短...
    功夫蟹子阅读 710评论 1 1