2011-03-01 27 views
15

Quiero que el archivo csv se abra en vim de la misma manera que se abre en microsoft office. Los datos deben estar en formato de columna y las comas no se deben ver y se deben atravesar fácilmente. ¿Es posible en vim con la ayuda de cualquier complemento?cómo trabajar con archivos csv en vim

Respuesta

7

He aquí algunos consejos para trabajar con archivos CSV en vim:

http://vim.wikia.com/wiki/Working_with_CSV_files

No estoy seguro de si hay una manera de mostrarlo en columnas, sin comas, aunque los consejos en ese enlace permiten vim atravesar y manipular CSV muy fácilmente.

18

probablemente un poco más tarde estoy respondiendo a esa pregunta, pero para la integridad de todos modos voy a responder. He hecho el csv plugin, que debería permitir hacer lo que quiera.

Entre otros, se permite:

  • visualización en el que la columna está el cursor, así como el número de columnas
  • Buscar texto dentro de una columna usando :SearchInColumn comando
  • Resalte la columna en la que la cursor está utilizando :HiColumn comando
  • organizar visualmente todas las columnas usando :ArrangeColumn comando
  • eliminar una columna utilizando :DeleteColumn comando
  • Mostrar una línea de cabecera vertical u horizontal utilizando :Header o :VHeader comando
  • ordenar una columna utilizando :Sort comando
  • columna copia a registrarse usando :Column comando
  • mover una columna detrás de otra columna usando :MoveCol comando
  • Calcule la suma de todos los valores dentro de una columna usando el comando :SumCol (también puede definir sus propias funciones de agregado personalizadas)
  • moverse a través de las columnas utilizando los comandos del modo normal (W hacia delante, H hacia atrás, K hacia arriba, J hacia abajo)
  • establece un buen resaltado de sintaxis, ocultando el delimitador, si su Vim soporta
+0

Hey, gran trabajo en ese plugin. ¡Pasé un tiempo dando masajes a los datos de GeoNames hoy y fue un salvavidas! – dguaraglia

+0

No puedo encontrar la forma de mostrar los delimitadores de forma predeterminada cuando estoy usando el complemento csv; de lo contrario, se ve genial ... – stefanB

+0

Intenta establecer la variable g: csv_no_conceal en 1. Si esto no funciona, abre un problema en la página de github. ¡Gracias! –

5

I' he probado el plugin csv de Christian, y es útil para ver rápidamente los archivos csv, especialmente cuando necesita ver muchos archivos diferentes.

Sin embargo, cuando voy a estar buscando en el mismo archivo csv más de un par de veces, me importar el archivo en sqlite3, lo que hace un análisis más detallado mucho más rápido y más fácil de realizar.

Por ejemplo, si mi archivo tiene el siguiente aspecto:

file.csv: 
field1name, field2name, field3name 
field1data, field2data, field3data 
field1data, field2data, field3data 

puedo crear una nueva base de datos SQLite (desde la línea de comandos):

commandprompt> sqlite3 mynew.db 

A continuación, crear una tabla en la base de datos para importar el archivo en:

sqlite> create table mytable (field1name, field2name, field3name); 
sqlite> .mode csv 
sqlite> .headers ON 
sqlite> .separator , 
sqlite> .import file.csv mytable 

Ahora la nueva tabla 'mitabla' contiene los datos del archivo, pero la primera fila es Stori ng de la cabecera, que por lo general no quiere, lo que necesita para eliminarla (asegúrese de usar comillas simples cuando se emite este comando!):

sqlite> delete from mytable where field1name = 'field1name'; 

Ahora usted puede buscar fácilmente a los datos, filtro fórmulas complejas, ordenar por múltiples campos, etc.

sqlite> select * from mytable limit 30; 

(lo sentimos, este se convirtió en un tutorial SQLite, pero parece que cada vez que no importación en SQLite, que acaban de pasar mucho más tiempo utilizando vim/less/grep/sort/cut de lo que habría importado en primer lugar).

3

También existe rainbow_csv vim plugin. Destacará columnas de archivos csv/tsv en diferentes colores "arco iris" y le permitirá escribir consultas SQL SELECT y UPDATE utilizando expresiones de Python o JavaScript.

demo rbql screencast