Cómo compartir la configuración entre vim y Neovim


23

Comencé a usar neovim y me mudé .vimrca .config/nvim/init.vimy otras cosas se encuentran en .local/share/nvim.

¿Cuál es la mejor manera de compartir configuraciones o incluso complementos entre vim y Neovim? Enlaces simbólicos? ¿Puedo cambiar los directorios en .vimrc para usar solo un enlace simbólico?

Después de migrar mi configuración de vim a la ubicación predeterminada de Neovim, esto parece funcionar casi:

ln -s ~/.local/share/nvim/site ~/.vim 
ln -s .config/nvim/init.vim .vimrc

Algunos complementos (usando vim-plug ) no parecen funcionar correctamente. No puedo cargar colores personalizados ni vim-airline.


1
puedes usar if has('nvim')solo para comandos
nvim

Respuestas:


37

TL; DR

Puede usar sus ~/.vimrcarchivos y complementos existentes ubicados dentro ~/.vimsin tener que vincular los archivos.

Y esto ahora está documentado en el manual de NeoVim, consulte Transición desde Vim .


Las siguientes líneas agregarán las rutas y el ~/.vimrcarchivo existentes a su configuración de nvim.

set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath=&runtimepath
source ~/.vimrc

Para Linux y macOS, solo agregue las líneas anteriores en la parte superior de su ~/.config/nvim/init.vim, o %LOCALAPPDATA%\nvim\init.vimpara Windows.

El crédito va a 👉 esto

saludos 🍻
Chris


8

Teniendo su configuración en la ubicación predeterminada de Neovim, haga lo siguiente:

mkdir -p ~/.local/share/nvim/site
ln -s ~/.local/share/nvim/site ~/.vim 
ln -s .config/nvim/init.vim .vimrc

Para arreglar el esquema de colores, tuve que establecer el modo de color de 256 terminales , es decir, agregar esto a su archivo .vimrc (= init.vim), que será ignorado por nvim :

set t_Co=256  " Note: Neovim ignores t_Co and other terminal codes.

Para obtener vim-airline agregué el siguiente fragmento a .vimrc:

set laststatus=2

No entiendo por qué esto es necesario solo en vim y no en Neovim, pero no soy el único que tropieza con esto.


1
Esto siempre ha sido necesario en vim. Probablemente nvim establece esto como predeterminado y es por eso que está trabajando allí.
Christian Brabandt 01 de

1
@ChristianBrabandt sí, por supuesto que es correcto.
lumbric

Creo que comúnmente las personas se habrán ~/.vimrcubicado en la carpeta de inicio, como señala la línea anterior ~/.vim.
Konrad

Es mejor seguir la otra respuesta , para que uno pueda tener una configuración específica de nvim, mientras que el abastecimiento ~/.vimrccomo configuración compartida.
ryenus

Si bien Neovim ignora las t_xxopciones, argumentaría que es más correcto envolver algo así if !has('nvim'), como en este ejemplo . Puede ignorarlos ahora, pero ¿y si eso cambia en el futuro? También indica implícitamente que la opción está relacionada solo con Vim.
ZeroKnight

5

Puedes usar if has('nvim'). Aquí hay ejemplos completos:

Configuración solo para Neovim:

if has('nvim')
        tnoremap <Esc> <C-\><C-n>
endif

Configuración solo para Vim

if !has('nvim')
    set ttymouse=xterm2
endif

1

El método que aquí intenta enlazar simbólicamente ~/.config/nvima ~/.vim, y hacer que el conf compatible con vim.

# nvim conf dir: ~/.config/nvim
# vim conf dir: ~/.vim
# link the 1st as the 2nd with relative links

# Prepare a vimrc file in ~/.config/nvim folder
ln -sf ./init.vim ~/.config/nvim/vimrc

# Link the whole ~/.config/nvim folder as ~/.vim foler
ln -sf ./.config/nvim ~/.vim

Después de esta configuración, ~/.config/nvim/init.vimes el archivo real utilizado como conf. ~/.vim/vimrces solo un enlace a él.

Ahora tenemos que hacer que el administrador de complementos de vimreutilización nvim, complementos, cambie runtimepathy packpath. De hecho, las rutas de los complementos se reutilizan automáticamente, la siguiente solución es reutilizar el administrador de complementos.

let g:is_nvim = has('nvim')
let g:is_vim8 = v:version >= 800 ? 1 : 0

" Reuse nvim's runtimepath and packpath in vim
if !g:is_nvim && g:is_vim8
  set runtimepath-=~/.vim
    \ runtimepath^=~/.local/share/nvim/site runtimepath^=~/.vim 
    \ runtimepath-=~/.vim/after
    \ runtimepath+=~/.local/share/nvim/site/after runtimepath+=~/.vim/after
  let &packpath = &runtimepath
endif

Fuente: Compartir confs entre vim y nvim


1

Solo para agregar a la respuesta ipatch, que es la respuesta correcta, si tiene una configuración ligeramente diferente de Vim, es posible que deba adaptar la ruta.

Por ejemplo, en Windows, en lugar de usar la configuración predeterminada con:

$HOME
   +--.vimrc
   +--.vim

Estoy usando:

$HOME
   +--vimfiles
          +--vimrc

(La razón es que es más fácil poner un solo directorio bajo control de revisión que un archivo y un directorio, particularmente cuando el archivo está en la raíz de su directorio de inicio)

Lo siguiente funciona para mí entonces:

set runtimepath^=~/vimfiles runtimepath+=~/vimfiles/after
let &packpath=&runtimepath
source ~/vimfiles/vimrc
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.