Go(Golang)编程语言自带一个工具,叫做gofmt.它是一个代码格式化程序,可以自动格式化您的代码(对齐、字母排序、制表符、间距、惯用语......)。真的很棒。所以我发现了这个在Vim中使用它的小自动命令,每次缓冲区都保存到文件中。auFileTypegoauBufWritePreFmtfmt是Govim插件自带的函数。这真的很棒,但是有1个问题。每次格式化程序写入缓冲区时,它都会在撤消/重做历史记录中创建一个跳转。这在尝试撤消/重做更改时变得非常痛苦,因为每第二次更改都是格式化程序(使光标跳转到第1行)。所以我想知道,在触发Fmt之后,是否有任何方法可以丢弃撤消/重做历史记录
出于某种原因,带有Go文件的vim似乎默认以红色突出显示尾随空格。在某种程度上,这很好,但大多数时候我觉得它很烦人,因为每次我输入一个空格时,它都会以红色突出显示开始。有没有办法阻止这种行为?我只在Go文件中遇到过这种情况。下面是我的vimrc,但我认为我没有放任何会影响它的东西。setnocompatiblesyntaxonsetautoindentsettabstop=4softtabstop=0autocmdFileTypegosettabstop=8softtabstop=0setformatoptions=tcroqlsetrelativenumbersetincsearch
出于某种原因,带有Go文件的vim似乎默认以红色突出显示尾随空格。在某种程度上,这很好,但大多数时候我觉得它很烦人,因为每次我输入一个空格时,它都会以红色突出显示开始。有没有办法阻止这种行为?我只在Go文件中遇到过这种情况。下面是我的vimrc,但我认为我没有放任何会影响它的东西。setnocompatiblesyntaxonsetautoindentsettabstop=4softtabstop=0autocmdFileTypegosettabstop=8softtabstop=0setformatoptions=tcroqlsetrelativenumbersetincsearch
编辑:我通常很想知道人们是如何为vim设置go自动完成功能的,并且正在寻求相关建议。关于我原来的问题,我想我知道我可以Go:https://github.com/nsf/gocode复制他们在那里提供的文件,然后开始使用vim自动完成功能。但是,我想知道人们的想法以及go社区如何设置vim自动完成功能。此外,我已经按照那里发布的说明进行操作,但我仍然无法在vim中进行自动完成。因此,我正在寻找有关如何使其发挥作用的其他替代方案或想法。不确定是什么问题。目前,当我尝试自动完成时,它只是简单地写下PANIC这个词,而不是向我显示自动完成选项。原创:我试图设置我的vim以使其可以自动完成Go
编辑:我通常很想知道人们是如何为vim设置go自动完成功能的,并且正在寻求相关建议。关于我原来的问题,我想我知道我可以Go:https://github.com/nsf/gocode复制他们在那里提供的文件,然后开始使用vim自动完成功能。但是,我想知道人们的想法以及go社区如何设置vim自动完成功能。此外,我已经按照那里发布的说明进行操作,但我仍然无法在vim中进行自动完成。因此,我正在寻找有关如何使其发挥作用的其他替代方案或想法。不确定是什么问题。目前,当我尝试自动完成时,它只是简单地写下PANIC这个词,而不是向我显示自动完成选项。原创:我试图设置我的vim以使其可以自动完成Go
VIMSyntastic插件适用于.go文件。但有时我想在同一个文件夹中有几个go文件,每个文件都有main()方法,这样我就可以gorunxxx每个文件(用于演示)。这将在我保存第二个文件(prog2.go)时导致错误:main在prog1.go的block先前声明中重新声明我如何告诉Syntastic忽略这些错误?更新1RobPike的“GoConcurrencyPatterns”和FrancescCampoyFlores的“TwelveGoBestPractices”等Go官方演讲都将源文件放在同一个文件夹中。所以这个问题不是关于运行gofile的最佳实践,而是关于如何抑制或忽略
VIMSyntastic插件适用于.go文件。但有时我想在同一个文件夹中有几个go文件,每个文件都有main()方法,这样我就可以gorunxxx每个文件(用于演示)。这将在我保存第二个文件(prog2.go)时导致错误:main在prog1.go的block先前声明中重新声明我如何告诉Syntastic忽略这些错误?更新1RobPike的“GoConcurrencyPatterns”和FrancescCampoyFlores的“TwelveGoBestPractices”等Go官方演讲都将源文件放在同一个文件夹中。所以这个问题不是关于运行gofile的最佳实践,而是关于如何抑制或忽略
我喜欢gitrebase-iHEAD~5压缩我的提交。有时我认为我需要返回5次提交,但后来意识到我需要7次。然而git已经在vim中启动了rebase编辑器.git/rebase-merge/git-rebase-todo。如果我退出那个缓冲区(vim),那么git会说:Successfullyrebasedandupdatedrefs/heads/my-branchname有没有办法在编辑器中停止rebase?我想我可以从另一个shellgitrebase--abort但不确定这会对我在中间的git-rebase-todo文件做什么在另一个缓冲区中编辑。
我喜欢gitrebase-iHEAD~5压缩我的提交。有时我认为我需要返回5次提交,但后来意识到我需要7次。然而git已经在vim中启动了rebase编辑器.git/rebase-merge/git-rebase-todo。如果我退出那个缓冲区(vim),那么git会说:Successfullyrebasedandupdatedrefs/heads/my-branchname有没有办法在编辑器中停止rebase?我想我可以从另一个shellgitrebase--abort但不确定这会对我在中间的git-rebase-todo文件做什么在另一个缓冲区中编辑。
Fugitive.vim允许我运行gitgrep命令;不幸的是,结果没有存储在快速修复列表中,所以我需要在:Ggrep之后运行:cw以获得易于解析的结果列表。我想输入:Ggr"defmy_function"而不是::Ggrep"defmy_function":cw如何在我的.vimrc文件中定义这个:Ggr命令?编辑定义:Ggr命令后,我可以映射到光标下的单词上的gitgrep,这真是太棒了:nnoremap:Ggr 最佳答案 这对我有用::command-nargs=+Ggrexecute'silentGgrep!'|cw|red