¿Hay editores que puedan editar archivos de texto de varios gigabytes, quizás cargando solo pequeñas porciones en la memoria a la vez? No parece que Vim pueda manejarlo = (
¿Hay editores que puedan editar archivos de texto de varios gigabytes, quizás cargando solo pequeñas porciones en la memoria a la vez? No parece que Vim pueda manejarlo = (
Respuestas:
Si se encuentra en * nix (y suponiendo que tiene que modificar sólo partes de archivo (y rara vez)), es posible dividir los archivos (utilizando el split
comando), editar de forma individual (usando awk
, sed
o algo similar) y concatenar ellos después de que están hechos.
cat file2 file3 >> file1
Ctrl-C detendrá la carga del archivo. Si el archivo es lo suficientemente pequeño, es posible que haya tenido la suerte de haber cargado todo el contenido y haber eliminado los pasos posteriores a la carga. Verifique que se haya cargado todo el archivo cuando utilice este consejo.
Vim puede manejar archivos grandes bastante bien. Acabo de editar un archivo de 3.4GB, eliminar líneas, etc. Tres cosas a tener en cuenta:
:115355
lo llevará directamente a la línea 115355, que es mucho más rápido para esos archivos grandes. Vim parece comenzar a escanear desde el principio cada vez que carga un búfer de líneas, y mantener presionada la tecla Ctrl-F para escanear el archivo parece volverse muy lento cerca del final.Nota: si su instancia de Vim es de solo lectura porque presionó Ctrl-C, es posible que Vim no haya cargado todo el archivo en el búfer. Si eso sucede, guardarlo solo guardará lo que está en el búfer, no el archivo completo . Puede consultar rápidamente con a G
para saltar hasta el final para asegurarse de que todas las líneas de su archivo estén allí.
Pueden ser los complementos los que hacen que se bloquee. (resaltado de sintaxis, pliegues, etc.)
Puede ejecutar vim sin complementos.
vim -u "NONE" hugefile.log
Es minimalista, pero al menos te dará los movimientos vi a los que estás acostumbrado.
syntax off
es otro obvio. Reduzca su instalación y obtenga lo que necesita. Descubrirás de lo que es capaz y si necesitas realizar una tarea por otros medios.
Una ligera mejora en la respuesta dada por @Al pachio con la solución split + vim en la que puede leer los archivos con un glob, usando efectivamente fragmentos de archivos como búfer, por ejemplo
$ split -l 5000 myBigFile
xaa
xab
xac
...
$ vim xa*
#edit the files
:nw #skip forward and write
:n! #skip forward and don't save
:Nw #skip back and write
:N! #skip back and don't save
Es posible que desee consultar este complemento VIM que deshabilita ciertas funciones de vim en aras de la velocidad al cargar archivos grandes.
Intenté hacer eso, principalmente con archivos de alrededor de 1 GB cuando necesitaba hacer un pequeño cambio en un volcado SQL. Estoy en Windows, lo que lo convierte en un gran problema. Es muy difícil.
La pregunta obvia es "¿por qué es necesario?" Puedo decirte por experiencia teniendo que probar esto más de una vez, probablemente realmente quieras intentar encontrar otra manera.
Entonces, ¿cómo lo haces? Hay algunas formas en que lo he hecho. A veces puedo hacer que vim o nano abra el archivo y puedo usarlos. Es un dolor muy fuerte, pero funciona.
Cuando eso no funciona (como en su caso), solo tiene algunas opciones. Puede escribir un pequeño programa para realizar los cambios que necesita (por ejemplo, buscar y reemplazar). Podría usar un programa de línea de comandos que pueda hacerlo (¿tal vez podría lograrse con sed / awk / grep / etc?)
Si eso no funciona, siempre puede dividir el archivo en trozos (algo como dividir es la opción obvia, pero puede usar head / tail para obtener la parte que desea) y luego editar la (s) parte (s) que la necesitan, y recombinar más tarde.
Créame, trate de encontrar otra forma.
Estoy usando vim 7.3.3 en Win7 x64 con el complemento LargeFile de Charles Campbell para manejar archivos de texto sin formato de varios gigabytes. Funciona muy bien.
Espero que vengas bien.
Vaya, nunca logré que vim se ahogara, ni siquiera con un GB o dos. Escuché que UltraEdit (en Windows) y BBEdit (en Mac) son aún más adecuados para archivos aún más grandes, pero no tengo experiencia personal.
En el pasado abrí un archivo de 3 gigas con esta herramienta http://csved.sjfrancke.nl/
Personalmente, me gusta UltraEdit . Aquí está su pequeña perorata sobre archivos grandes .
Lo único que he podido usar para algo así es mi editor hexadecimal favorito de Mac, 0XED. Sin embargo, eso fue con archivos que consideré grandes en decenas de megabytes. No estoy seguro de hasta dónde llegará. Sin embargo, estoy bastante seguro de que solo carga partes del archivo en la memoria a la vez.