¿Cómo puedo abrir archivos muy grandes con buen rendimiento?


27

Tengo archivos de registro del servidor que tienen varios gigabytes de tamaño (en Ubuntu). Cuando intento abrirlos, el terminal se bloquea durante aproximadamente un minuto mientras el archivo se carga en Vim. ¿Hay alguna manera de reducir este tiempo, por ejemplo configurando Vim para cargar el archivo a pedido, o por algún otro método?


44
¿Por qué no usar less?
Bernhard

1
¿Tiene la intención de manipular los archivos de alguna manera, o simplemente quiere verlos?
200_success

1
Me gustaría editar los archivos.
peter-b


Lo más probable es que me expulsen del sitio para siempre, pero tengo que decirlo: cuando se trata de trabajar con archivos enormes, Emacs es la herramienta para el trabajo. :-)
toro2k

Respuestas:


25

Primero, intente cargar vim sin complementos o vimrc:

vim -u NONE gargantuan.txt

Si esto es sustancialmente más rápido, entonces probablemente tenga resaltado de sintaxis, plegado, complementos o algo más que esté ocupando la mayor parte del tiempo. Intente apagar las cosas en su vimrc (y deshabilitar sus complementos) hasta que encuentre al culpable.

También asegúrese de set ft= syn=y syntax off.

Si esto no ayuda, es probable que tenga líneas muy largas que causan el problema. Intente set nowrapdesactivar el ajuste de línea.


1
vim -U NONE -N gargantuan.txthará lo mismo mientras ejecuta vim en el nocompatibleque se ejecuta en modo "vi iMproved" en lugar de intentar ser compatible con el antiguo "vi"
ecerulm

15

Vim es la herramienta incorrecta para el trabajo: debe usar un buscapersonas como moreo less.

Si insiste en usar un editor, pruebe este ejemplo adaptado de la wiki de Vim :

augroup LargeFile
        let g:large_file = 10485760 " 10MB

        " Set options:
        "   eventignore+=FileType (no syntax highlighting etc
        "   assumes FileType always on)
        "   noswapfile (save copy of file)
        "   bufhidden=unload (save memory when other file is viewed)
        "   buftype=nowritefile (is read-only)
        "   undolevels=-1 (no undo possible)
        au BufReadPre *
                \ let f=expand("<afile>") |
                \ if getfsize(f) > g:large_file |
                        \ set eventignore+=FileType |
                        \ setlocal noswapfile bufhidden=unload buftype=nowrite undolevels=-1 |
                \ else |
                        \ set eventignore-=FileType |
                \ endif
augroup END

¿Puede lesso moretambién hacer cambios en mi archivo?
Martin Tournoij

3
No pueden, por supuesto. Los registros no están destinados a ser editados.
romainl

55
sed fue inventado para este propósito. Usted determina qué cambios desea realizar, expresados ​​como sustituciones, luego ejecuta sedpara realizarlos. Esto también funciona en secuencias (es decir, contenido de archivos que no tiene fin porque se está produciendo).
reinierpost

Me he alias less, morey mana vimpager. github.com/rkitover/vimpager
Alex Kroll

5

El complemento LargeFile.vim está diseñado para acelerar la edición de archivos grandes. Ver http://www.drchip.org/astronaut/vim/index.html#LARGEFILE .

De la página:

Permite una edición mucho más rápida de archivos grandes (por defecto: 100 MB + son "grandes"), al precio de desactivar eventos, deshacer, resaltar sintaxis, etc. También disponible en vim.sf.net donde puede clasificarlo.

Según el manual, el complemento funciona simplemente instalándolo. Puede establecer el límite cambiando g:LargeFile, a un número entero de MB, que dice por defecto a 20 MB (en contraste con la descripción del proyecto que dice 100)

El plugin también proporciona comandos :UnLarge, :Largey :Large!para desactivar, vuelva a habilitar, o fuerza habilitar (para archivos pequeños), respectivamente, en el archivo cargado actualmente.


2

He oído que desactivar el resaltado de sintaxis puede ayudar:

:syntax off

Tener habilitado cualquier tipo de plegado también tiene un efecto masivo
craigp

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.