= Godot + Vim :experimental: :icons: font :autofit-option: :!source-linenums-option: :imagesdir: images
== Intro
Godot engine has rock solid built-in editor but I still feel more comfortable within my (g)(n)vim environment.
This plugin provides:
:GodotRunCurrent
Run last scene: :GodotRunLast
Select and run a scene with standard vim tab completion (default is a main scene): :GodotRun
Select and run a scene with a FZF (if installed): :GodotRunFZF
All commands are local to buffer -- available only in gdscript
or gsl
buffers.
For IDE-like completion I suggest to try https://github.com/ycm-core/YouCompleteMe[YouCompleteMe] or https://github.com/neoclide/coc.nvim[coc.nvim] plugin. (Both do a really great job providing gdscript completion for me).
https://www.youtube.com/watch?v=ALXN4HJ5bsg
== Select And Run Scene
:GodotRun <TAB>
to select a scene and run it. :GodotRun<CR>
will run main scene.:GodotRunFZF<CR>
to select a scene using FZF (if installed) and run it.Note that commands assume godot executable is on your PATH
, i.e. you can run godot
from your terminal.
If this is not the case, specify it in your settings:
image::https://user-images.githubusercontent.com/234774/80359547-a5fc6c00-8886-11ea-9cdd-bc027d46db4c.gif[]
NOTE: To run game or a scene in "async way" install either https://github.com/tpope/vim-dispatch[vim-dispatch] or https://github.com/skywind3000/asyncrun.vim[asyncrun.vim].
== Settings
No default mappings are provided.
Good practice is to put your personal filetype specific settings into after directory:
~/.vim/after/ftplugin/gdscript.vim
(or ~/vimfiles/after/ftplugin/gdscript.vim
if you're on windows).
Or you can use autocommand in your .vimrc
(example):
== Installation
" Specify a directory for plugins call plug#begin('~/.vim/plugged')
Plug 'habamax/vim-godot'
" ... other plugins ...
<.> Change USERNAME
to your user name
Manual::
Manual with git
.../start/vim-godot
directory:
autoload
ftdetect
ftplugin
... etc== Setting up YouCompleteMe for Godot 3.2.2+
. Install and set up YCM according to https://github.com/ycm-core/YouCompleteMe#installation[it's documentation].
(i.e. install with package manager then run ./install.py
).
. Make sure general completion works for you.
. Follow https://github.com/ycm-core/lsp-examples[instructions for enabling godot].
Or you can just add this to your vimrc:
if !has_key( g:, 'ycm_language_server' ) let g:ycm_language_server = [] endif
NOTE: This is not a comprehensive YouCompleteMe
setup guide. It just works
for me and hopefully would work for you.
== Setting up coc.nvim for Godot 3.2.2+
:CocConfig
and add following lines:
+
[source,json]. Save and restart
NOTE: This is not a comprehensive coc.nvim
setup guide. It just works for me
and hopefully would work for you.
Editor > Editor Settings > Network > Language Server
== Setting up ale for Godot 3.2.2+
" Enable ALE auto completion globally let g:ale_completion_enabled = 1
" Allow ALE to autoimport completion entries from LSP servers let g:ale_completion_autoimport = 1
. Save and restart
NOTE: This is not a comprehensive ALE setup guide. Make sure to adjust it to your needs.
== Setting up ctags
Put the following contents:
~/.ctags.d/gdscript.ctags
if you use https://ctags.io/[universal ctags] or~/.ctags
if you use http://ctags.sourceforge.net/[exuberant ctags]== Setting up Neovim native lsp with nvim-cmp Install the following plugins
put this in your init.vim to set up the gdscript server and connecting cmp to it (the mappings are the official cmp mappings you can remove or change them)
set completeopt=menu,menuone,noselect
lua << EOF require'lspconfig'.gdscript.setup{capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())}
local cmp = require'cmp'
cmp.setup({
mapping = {
['
== Setup vim as an external editor for Godot
Note I didn't try it myself, but @macmv https://github.com/habamax/vim-godot/issues/29[had provided] some info about it.
Open menu Editor/Editor Settings/
then navigate to General/External/
:
Use external editor
vim
to Exec Path
--servername godot --remote-send "<C-\><C-N>:n {file}<CR>{line}G{col}|"
to Exec Flags
== Setup Neovim as an external editor for Godot
Navigate to the root of your godot project (where the project.godot is residing) and start a new Neovim like this:
(on Windows you might have to specify a IP:port combination instead, like "127.0.0.1:9696")
Open menu Editor/Editor Settings/
then navigate to General/External/
:
Use external editor
nvim
to Exec Path
--server ./godothost --remote-send "<C-\><C-N>:n {file}<CR>{line}G{col}|"
to Exec Flags
now when you click on a script in godot it will open it in a new buffer in Neovim.