英文:
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>
添加//
并退出可视块插入模式。
这样应该会得到你想要的效果:
英文:
The way I do this is with block mode insertion.
- Put your cursor on the
i
ofif
. - Press
<C-v>
to start insert mode, thenjj
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 (seev_b_I
). - Press
//<Esc>
to add//
and leave visual block insert mode.
Which should give you exactly what you want:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论