Codi Vim es Scratchpad Interactivo para Hackers
Codi Vim es Scratchpad Interactivo para Hackers

Codi.Vim: El Scratchpad Interactivo para Hackers

Codi es un scratchpad (piense en ello como un bloc de notas) interactivo para hackers, con una interfaz similar a la de Numi. Abre un panel sincronizado con tu buffer principal que muestra los resultados de la evaluación de cada línea mientras escribes (con NeoVim o Vim con +job y +channel, de forma asíncrona). Es extensible a casi cualquier lenguaje que proporcione un REPL (Read-eval-print loop) (intérprete interactivo).

Lenguajes con soporte incorporado: Python, JavaScript, CoffeeScript, Haskell, PureScript, Ruby, OCaml, R, Clojure/ClojureScript, PHP, Lua, C++, Julia, Elm, Elixir, TypeScript, Mathjs.

Pull requests para soportar nuevos lenguajes.

Nota

Sin soporte asíncrono, la evaluación se activará al mantener el cursor en lugar de al cambiar el texto.

Para más información, consulta la documentación.

Instalación

Utiliza tu gestor de paquetes favorito (vim-plugVundlepathogen.vim), o añade este directorio a tu ruta de ejecución de Vim.

Por ejemplo, si utilizas vim-plug, añade la siguiente línea a ~/.vimrc:

Plug 'metakirby5/codi.vim'

Por ejemplo, instalación de Vim-Plug (en caso no lo tengas):

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Ahora que tienes el gestor de plugins instalado, puedes seleccionar los plugins que quieres instalar en tu vim.

touch ~/.vimrc
vim ~/.vimrc
call plug#begin()
 
Plug 'metakirby5/codi.vim' 
call plug#end()
:PlugInstall

Dependencias

  • OS X o Linux (¡el soporte de Windows será pronto!)
  • Vim 7.4 (con +job y +channel para la evaluación asíncrona) o NeoVim (todavía en su infancia – ¡por favor, informe de los errores!)
  • uname
  • Si no utiliza NeoVim, script (BSD o Linux, la página man debería decir al menos 2013)

Cada intérprete depende también de su REPL. Estos se cargan bajo demanda. Por ejemplo, si sólo quieres usar el intérprete Python Codi, no necesitarás ghci.

Dependencias del intérprete por defecto:

  • Python: python
  • JavaScript: node
  • CoffeeScript: coffee
  • Haskell: ghci (tenga mucho cuidado con la evaluación perezosa)
  • PureScript pulp psci
  • Ruby: irb
  • OCaml: ocaml
  • R: R
  • Clojure: planck
  • PHP: psysh
  • Lua: lua
  • C++: cling
  • Julia: julia
  • Elm: elm
  • Elixir: iex
  • TypeScript: tsun
  • Mathjs: mathjs

Uso

  • Codi  activa Codi para el búfer actual, utilizando el tipo de archivo proporcionado o el tipo de archivo del búfer.
  • Codi! desactiva Codi para el búfer actual.
  • Codi!!  alterna el Codi para el búfer actual, utilizando el tipo de archivo proporcionado o el tipo de archivo del búfer.

Wrapper de Shell

Una buena manera de utilizar Codi es a través de un envoltorio de shell que puede pegar en su ~/.bashrc:

# Codi
# Usage: codi [filetype] [filename]
codi() {
  local syntax="${1:-python}"
  shift
  vim -c \
    "let g:startify_disable_at_vimenter = 1 |\
    set bt=nofile ls=0 noru nonu nornu |\
    hi ColorColumn ctermbg=NONE |\
    hi VertSplit ctermbg=NONE |\
    hi NonText ctermfg=0 |\
    Codi $syntax" "$@"
}

Opciones

  • g:codi#interpreters es una lista de intérpretes definidos por el usuario. Consulta la documentación para más información.
  • g:codi#aliases es una lista de alias de tipos de archivo de intérpretes definidos por el usuario. Consulta la documentación para más información.

Las siguientes opciones también pueden establecerse por intérprete a través de g:codi#interpreters:

  • g:codi#autocmd determina qué autocomandos activan las actualizaciones. Consulta la documentación para más información.
  • g:codi#width es el ancho de la división de Codi.
  • g:codi#rightsplit es si el Codi aparece o no en el lado derecho.
  • g:codi#rightalign es si se alinea o no a la derecha el buffer Codi.
  • g:codi#autoclose es si se cierra o no Codi cuando se cierra el buffer asociado.
  • g:codi#raw es si se muestran o no los resultados del intérprete sin formato de alineación (útil para la depuración).
  • g:codi#sync es si se fuerza o no la ejecución sincrónica. No hay razón para tocar esto a menos que quieras comparar async con sync.

Autocomandos

  • CodiEnterPreCodiEnterPost: Cuando un panel Codi entra.
  • CodiUpdatePreCodiUpdatePost: Cuando un panel Codi se actualiza.
  • CodiLeavePreCodiLeavePost: Cuando un panel Codi sale.

FAQ

¿Por qué no funciona X en Codi, si funciona en un archivo fuente normal?

Codi no pretende ser un sustituto de la ejecución real de tu programa; no soporta nada más que lo que soporta el REPL subyacente. Esta es la razón por la que los pragmas del lenguaje Haskell no funcionan y las declaraciones de OCaml deben terminar con ;;.

Codi deja un montón de procesos antiguos en ejecución, ¿qué está pasando?

La causa de este problema es aún desconocida, pero ocurre con poca frecuencia. Consulta :h codi-introduction-warnings para más información.

Codi no parece funcionar en mi configuración.

Verifica :h codi-introduction-gotchas.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda