使用Vim进行注释,并使其与”go fmt”工具正常配合使用。

huangapple go评论88阅读模式
英文:

Make comments with Vim that live normally with the 'go fmt' tool

问题

Golang有一个名为"gofmt"的工具,用于格式化代码。我正在使用vim-go插件,每次保存文件时都会触发"gofmt"工具。

Golang使用制表符进行缩进。在下面的示例中,我将制表符标记为[ ]

我遇到了一个问题:

我有以下代码:

func main() {
[  ]if true {
[  ][  ]do.Something()
[  ]}
}

我需要注释掉if子句。所以,如果我像下面这样注释它(我正在使用nerd-commenter):

func main() {
//[  ]if true {
//[  ][  ]do.Something()
//[  ]}
}

Gofmt会将其格式化为:

func main() {
[  ]//[  ]if true {
[  ]//[  ][  ]do.Something()
[  ]//[  ]}
}

如果我这样做:

func main() {
[  ]//if true {
[  ][  ]//do.Something()
[  ]//}
}

Gofmt会将其格式化为:

func main() {
[  ]//if true {
[  ]//do.Something()
[  ]//}
}

我需要像下面这样注释掉if子句:

func main() {
[  ]//if true {
[  ]//[  ]do.Something()
[  ]//}
}

然后,Gofmt就不会更改被注释的代码块。我该如何做到这一点?

英文:

Golang has a tool that's called 'gofmt' which formats your code. I'm using the vim-go plugin which fires the 'gofmt' tool every time when I save a file.

Golang uses tabs for indention. I marked the tabs as [ ] in the following examples.

Here's a problem which I've run:

I have the following code:

func main() {
[  ]if true {
[  ][  ]do.Something()
[  ]}
}

I need to comment the if clause.
So, if I comment it like the following(I'm using nerd-commenter):

func main() {
//[  ]if true {
//[  ][  ]do.Something()
//[  ]}
}

Gofmt formats it to:

func main() {
[  ]//[  ]if true {
[  ]//[  ][  ]do.Something()
[  ]//[  ]}
}

If I do this:

func main() {
[  ]//if true {
[  ][  ]//do.Something()
[  ]//}
}

Gofmt formats it to this:

func main() {
[  ]//if true {
[  ]//do.Something()
[  ]//}
}

I need to comment the if clause like the following:

func main() {
[  ]//if true {
[  ]//[  ]do.Something()
[  ]//}
}

Then Gofmt won't change the commented block.
How I can do this?

答案1

得分: 2

我是你的中文翻译助手,以下是翻译好的内容:

我使用块模式插入来完成这个操作。

  • 将光标放在 if 中的 i 上。
  • 按下 <C-v> 进入插入模式,然后按下 jj 向下移动两行。
  • 按下 I 进入“可视块插入”模式,这将在每一行的块选择的开头插入文本(参见 v_b_I)。
  • 按下 //<Esc> 添加 // 并退出可视块插入模式。

这样应该会得到你想要的效果:

使用Vim进行注释,并使其与”go fmt”工具正常配合使用。

英文:

The way I do this is with block mode insertion.

  • Put your cursor on the i of if.
  • Press <C-v> to start insert mode, then jj to move it down two lines.
  • Press I to enter "Visual-Block insert", which will insert text at the start of the block selection for every line (see v_b_I).
  • Press //<Esc> to add // and leave visual block insert mode.

Which should give you exactly what you want:

使用Vim进行注释,并使其与”go fmt”工具正常配合使用。

huangapple
  • 本文由 发表于 2016年12月2日 02:12:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/40917611.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定