Android Studio:如何删除/更新添加到所有新类的“创建者”注释?

时间:2013-11-20 23:18:12

标签: android-studio intellij-idea

默认情况下,Android Studio会自动为所有新类添加标题注释,例如

/**
 * Created by Dan on 11/20/13.
 */

自定义或删除它的设置在哪里?

9 个答案:

答案 0 :(得分:391)

从菜单栏中:

    在Mac OS上
  • 选择Android Studio - > Preferences
  • 在Windows和Linux上选择File - > Settings

然后查找Editor - >左侧窗格中的File and Code Templates

你有两种方法可以改变这个......

1)选择Includes标签并直接修改Created by...文字。

enter image description here

2)选择Templates标签,然后为您需要的任何模板修改#parse("File Header.java")行。

templates tab edit

我个人遵循选项1)并将默认标题注释为TODO,例如

/**
 * TODO: Add a class header comment!
 */

这些说明基于Android Studio v0.3.7。并且还在v1.2.1.1上进行了测试

答案 1 :(得分:55)

您可以使用#set($ VARIABLE =“value”)函数覆盖模板文件中的$ {USER}变量。

/* * A minimal Scheme interpreter, as seen in lis.py and SICP * http://norvig.com/lispy.html * http://mitpress.mit.edu/sicp/full-text/sicp/book/node77.html * * Pieter Kelchtermans 2013 * LICENSE: WTFPL 2.0 */ package main import ( "bufio" "fmt" "log" "os" "reflect" "strconv" "strings" ) func main() { Repl() } /* Eval / Apply */ func eval(expression scmer, en *env) (value scmer) { switch e := expression.(type) { case number: value = e case symbol: value = en.Find(e).vars[e] case []scmer: switch car, _ := e[0].(symbol); car { case "quote": value = e[1] case "if": if eval(e[1], en).(bool) { value = eval(e[2], en) } else { value = eval(e[3], en) } case "set!": v := e[1].(symbol) en.Find(v).vars[v] = eval(e[2], en) value = "ok" case "define": en.vars[e[1].(symbol)] = eval(e[2], en) value = "ok" case "lambda": value = proc{e[1], e[2], en} case "begin": for _, i := range e[1:] { value = eval(i, en) } default: operands := e[1:] values := make([]scmer, len(operands)) for i, x := range operands { values[i] = eval(x, en) } value = apply(eval(e[0], en), values) } default: log.Println("Unknown expression type - EVAL", e) } return } func apply(procedure scmer, args []scmer) (value scmer) { switch p := procedure.(type) { case func(...scmer) scmer: value = p(args...) case proc: en := &env{make(vars), p.en} switch params := p.params.(type) { case []scmer: for i, param := range params { en.vars[param.(symbol)] = args[i] } default: en.vars[params.(symbol)] = args } value = eval(p.body, en) default: log.Println("Unknown procedure type - APPLY", p) } return } type proc struct { params, body scmer en *env } /* Environments */ type vars map[symbol]scmer type env struct { vars outer *env } func (e *env) Find(s symbol) *env { if _, ok := e.vars[s]; ok { return e } else { return e.outer.Find(s) } } /* Primitives */ var globalenv env func init() { globalenv = env{ vars{ //aka an incomplete set of compiled-in functions "+": func(a ...scmer) scmer { v := a[0].(number) for _, i := range a[1:] { v += i.(number) } return v }, "-": func(a ...scmer) scmer { v := a[0].(number) for _, i := range a[1:] { v -= i.(number) } return v }, "*": func(a ...scmer) scmer { v := a[0].(number) for _, i := range a[1:] { v *= i.(number) } return v }, "/": func(a ...scmer) scmer { v := a[0].(number) for _, i := range a[1:] { v /= i.(number) } return v }, "<=": func(a ...scmer) scmer { return a[0].(number) <= a[1].(number) }, "equal?": func(a ...scmer) scmer { return reflect.DeepEqual(a[0], a[1]) }, "cons": func(a ...scmer) scmer { switch car := a[0]; cdr := a[1].(type) { case []scmer: return append([]scmer{car}, cdr...) default: return []scmer{car, cdr} } }, "car": func(a ...scmer) scmer { return a[0].([]scmer)[0] }, "cdr": func(a ...scmer) scmer { return a[0].([]scmer)[1:] }, "list": eval(read( "(lambda z z)"), &globalenv), }, nil} } /* Parsing */ //symbols, numbers, expressions, procedures, lists, ... all implement this interface, which enables passing them along in the interpreter type scmer interface{} type symbol string //symbols are represented by strings type number float64 //numbers by float64 func read(s string) (expression scmer) { tokens := tokenize(s) return readFrom(&tokens) } //Syntactic Analysis func readFrom(tokens *[]string) (expression scmer) { //pop first element from tokens token := (*tokens)[0] *tokens = (*tokens)[1:] switch token { case "(": //a list begins L := make([]scmer, 0) for (*tokens)[0] != ")" { if i := readFrom(tokens); i != symbol("") { L = append(L, i) } } *tokens = (*tokens)[1:] return L default: //an atom occurs if f, err := strconv.ParseFloat(token, 64); err == nil { return number(f) } else { return symbol(token) } } } //Lexical Analysis func tokenize(s string) []string { return strings.Split( strings.Replace(strings.Replace(s, "(", "( ", -1), ")", " )", -1), " ") } /* Interactivity */ func String(v scmer) string { switch v := v.(type) { case []scmer: l := make([]string, len(v)) for i, x := range v { l[i] = String(x) } return "(" + strings.Join(l, " ") + ")" default: return fmt.Sprint(v) } } func Repl() { scanner := bufio.NewScanner(os.Stdin) for fmt.Print("> "); scanner.Scan(); fmt.Print("> ") { fmt.Println("==>", String(eval(read(scanner.Text()), &globalenv))) } }

On windows: Press Ctrl+Alt+S and go to Settings -> File and Code Templates -> Includes -> File Header

添加#set()函数调用,例如:

On Mac: Android Studio -> Preferences -> Editor -> 
File and Code Templates -> Includes -> File Header

答案 2 :(得分:23)

除了Dan的答案(这是更严格的方法),您还可以点击标题,然后选择输入(在Mac上),您可以选择编辑默认文件模板。或者,单击小灯泡也可以到达

enter image description here

答案 3 :(得分:18)

更改Android Studio文件标题模板

第1步:首先将鼠标悬停在文件标题上,然后点击它以获取黄色灯泡和菜单,如下面的屏幕截图所示:

yellow lightbulb menu > Edit template

第2步:然后点击修改模板菜单项,并进入以下弹出窗口:

Edit File Template pop-up window

注意:在其描述区域中有许多其他可用的模板变量,您也可以使用它们。

第3步:在编辑器区域中添加您的姓名,如以下屏幕截图所示,然后点击“确定”按钮以及当前文件和将来的新类文件标题将相应生成。

Updated header template configuration

希望这个答案对那里的其他人有所帮助! :-)干杯! (这适用于Android Studio 2。2(2015年9月)版。)

答案 4 :(得分:6)

  1. 按ctrl + shift + A
  2. 类型:文件和代码模板。
  3. 在包含
  4. 下查找文件标题
  5. 您可以输入以下内容
  6. enter image description here

答案 5 :(得分:2)

您也可以禁用警告。对我来说,默认模板还可以,但是看到黄色突出显示的类javadoc让我烦恼。所以要禁用它,请转到设置 - &gt;编辑 - &gt;检查 - &gt;一般 - &gt;取消选中“默认文件模板使用”。

您也可以在所有项目中执行此操作。只需在同一“检查”选项卡中将“项目”配置文件更改为“默认”。

答案 6 :(得分:2)

  

设置 - &gt;编辑器 - &gt;版权 - &gt;版权资料

是另一个地方(除了“设置 - &gt;编辑器 - &gt;文件和代码模板”),其中可以定义类似的模板,并且无论何时创建文件都会触发。

答案 7 :(得分:1)

如果您要删除所有已创建的评论。按 Ctrl + Shift + R 打开路径替换对话框。检查正则表达式选项并替换

/\*\*\n \* Created by .*\n \*/

nothing

正则表达式最初由nerdinand发布,评论为以下answer。虽然我问过他,但他几个月没有创造答案。这就是我现在这样做的原因,所以人们可以更容易地找到它。

答案 8 :(得分:1)

接受的答案包含有关Android Studio v0.3的说明。所以我决定添加有关Android Studio 3.0.1的说明

  • 转到Android Studio Preferences-> CopyRight->CopyRightProfiles,然后单击[+]添加新的配置文件或编辑现有的配置文件。

enter image description here

  • 创建或更新版权模板,可以从下面复制示例模板:
  

创作者:Hitesh Sahu,今天$       上次修改时间:$ file.lastModified       版权:保留所有权利Ⓒ$ today.year http://hiteshsahu.com

     

根据Apache许可2.0版(“许可”)获得许可;除非遵守许可,否则不得使用此文件。   您可以在以下位置获得许可的副本:       http://www.apache.org/licenses/LICENSE-2.0       除非适用法律要求或书面同意,否则根据许可协议分发的软件将按“原样”分发   依据,不附带任何明示或任何形式的保证或条件   默示。有关特定语言的管理,请参阅许可证   许可下的许可和限制。

enter image description here

  • 现在选择该新创建的版权作为默认版权资料

    enter image description here

  • 最后更新整个项目的版权,如下所示

    enter image description here