英文:
Cannot auto format go (golang) code in vim
问题
我遇到了以下命令的问题:
autocmd FileType go autocmd BufWritePre <buffer> Fmt
它应该通过将其放在我的.vimrc
文件的末尾来自动格式化我的代码。
这是我的.vimrc
文件的样子:
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'
" Git plugin not hosted on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Avoid a name conflict with L9
Plugin 'user/L9', {'name': 'newL9'}
Plugin 'commentary.vim'
Plugin 'go.vim'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
syntax on
filetype plugin on
filetype indent on
"autocmd FileType go compiler go
autocmd FileType go autocmd BufWritePre <buffer> Fmt
然而,vim给我抛出了一个错误:
Error Detected while processing BufWrite Auto commands for "<buffer=1>"
E492: Not an editor command: Fmt
我不知道出了什么问题,特别是因为之前它是可以工作的。
英文:
I was having a problem with the following command:
autocmd FileType go autocmd BufWritePre <buffer> Fmt
its suppose to format my code code automatically by putting it at the end of my .vimrc
file.
This is how my .vimrc file lookgs like:
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'
" Git plugin not hosted on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Avoid a name conflict with L9
Plugin 'user/L9', {'name': 'newL9'}
Plugin 'commentary.vim'
Plugin 'go.vim'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
syntax on
filetype plugin on
filetype indent on
"autocmd FileType go compiler go
autocmd FileType go autocmd BufWritePre <buffer> Fmt
However, vim does throw me an error saying:
Error Detected while processing BufWrite Auto commands for "<buffer=1>"
E492: Not an editor command: Fmt
I have no idea whats wrong, specially because it was working earlier.
答案1
得分: 3
您可能在提到由此定义的:Fmt
命令,它是由this提供的。
看起来这个文件类型插件没有被加载。您可以使用:scriptnames
命令进行检查;它应该包含ftplugin/go/fmt.vim
。如果没有包含,那么可能是您的'runtimepath'
选项有问题。
另外,您可以使用fatih/vim-go插件;它似乎有一个自动格式化Go源代码的配置,因此您不需要自己定义:autocmd
命令。
英文:
You're probably referring to the :Fmt
command defined by this.
It looks like that filetype plugin isn't sourced. You can check with the :scriptnames
command; it needs to contain ftplugin/go/fmt.vim
. If it isn't, something's wrong with your 'runtimepath'
option.
Alternatively, you could use fatih/vim-go; it apparently has a configuration that automatically formats the Go source code, so you don't need to define that :autocmd
on your own.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论