go lang
code
から直接実行する方法はvim editor
?
たとえば、現在編集中のファイルはarray.go
です。このコードを vim で実行するには、どのようなコマンドを使用すればよいですか?
わかりましたので、いくつかの試行の後、これは機能します:!go run %
環境変数を適切に設定したと仮定します。この_gvimrc
ファイルを使用できます (Windows では にあるはずC:\Users\UserName
ですが、Linux ではわかりません):
set guifont=Lucida_Console:h11
colorscheme dejavu
set tabstop=4
filetype plugin on
filetype plugin indent on
syntax on
" causes vim opens maximized in windows (@least)
au GUIEnter * simalt ~x
set autochdir
set number
set nobackup
" set nowritebackup
" this made my vim life (as a begginer at least) much happier!
" thanks to @ http://vim.wikia.com/wiki/Display_output_of_shell_commands_in_new_window bottom of the page
function! s:ExecuteInShell(command, bang)
let _ = a:bang != '' ? s:_ : a:command == '' ? '' : join(map(split(a:command), 'expand(v:val)'))
if (_ != '')
let s:_ = _
let bufnr = bufnr('%')
let winnr = bufwinnr('^' . _ . '$')
silent! execute winnr < 0 ? 'belowright new ' . fnameescape(_) : winnr . 'wincmd w'
setlocal buftype=nowrite bufhidden=wipe nobuflisted noswapfile wrap number
silent! :%d
let message = 'Execute ' . _ . '...'
call append(0, message)
echo message
silent! 2d | resize 1 | redraw
silent! execute 'silent! %!'. _
silent! execute 'resize ' . line('$')
silent! execute 'syntax on'
silent! execute 'autocmd BufUnload <buffer> execute bufwinnr(' . bufnr . ') . ''wincmd w'''
silent! execute 'autocmd BufEnter <buffer> execute ''resize '' . line(''$'')'
silent! execute 'nnoremap <silent> <buffer> <CR> :call <SID>ExecuteInShell(''' . _ . ''', '''')<CR>'
silent! execute 'nnoremap <silent> <buffer> <LocalLeader>r :call <SID>ExecuteInShell(''' . _ . ''', '''')<CR>'
silent! execute 'nnoremap <silent> <buffer> <LocalLeader>g :execute bufwinnr(' . bufnr . ') . ''wincmd w''<CR>'
nnoremap <silent> <buffer> <C-W>_ :execute 'resize ' . line('$')<CR>
silent! syntax on
endif
endfunction
command! -complete=shellcmd -nargs=* -bang Shell call s:ExecuteInShell(<q-args>, '<bang>')
cabbrev shell Shell
" my additional tools
command! -complete=shellcmd -nargs=* -bang Gor call s:ExecuteInShell('go run %', '<bang>')
command! -complete=shellcmd -nargs=* -bang Gon call s:ExecuteInShell('go install', '<bang>')
command! -complete=shellcmd -nargs=* -bang Gob call s:ExecuteInShell('go build', '<bang>')
command! -complete=shellcmd -nargs=* -bang Got call s:ExecuteInShell('go test -v', '<bang>')
:map <F5> :Gor<CR>
:map <F6> :Gob<CR>
:map <F7> :Gon<CR>
:map <F9> :Got<CR>
:map <F10> :Fmt<CR>:w<CR>
:map <F12> :q<CR>
cabbrev fmt Fmt
:set encoding=utf-8
:set fileencodings=utf-8
これを押すF5
と go ( go run file.go
) が実行され、出力が別のドキュメントに表示されます (別のドキュメント:q
を閉じることができます)。その他のコマンドはF6
、build、F7
install、F9
test で、(私の最愛の人)F10
はfmt
+:w
です。
ところでdejavu
、私のお気に入りの配色です (コードは gorilla/mux から):
~/.vimrc
このようにキーをマップすることもできます
nnoremap gr :!go run %<CR>
gr
そのため、vim を簡単に入力するだけで実行できます。