如何在vim中使用csv文件

vai*_*war 17 csv vim plugins

我希望csv文件在vim中以与在microsoft office中打开相同的方式打开.数据应采用列格式,不应看到逗号,应轻松遍历.在vim的帮助下是否可以使用任何插件?

Chr*_*ndt 21

我可能稍后回答了这个问题,但为了完整起见我还是会回答.我已经制作了csv插件,这应该可以做你想要的.

其中,它允许:

  • 显示光标所在的列以及列数
  • 使用:SearchInColumn命令在列中搜索文本
  • 突出显示光标正在使用:HiColumn命令的列
  • 使用:ArrangeColumn命令可视地排列所有列
  • 使用:DeleteColumn命令删除列
  • 使用:Header:VHeader命令显示垂直或水平标题行
  • 使用:Sort命令对列进行排序
  • 复制列使用:Column命令注册
  • 使用:MoveCol命令在另一列后面移动一列
  • 使用:SumCol命令计算列中所有值的总和(您还可以定义自己的自定义聚合函数)
  • 使用正常模式命令(W向前,向后H,向上K,J向下)移动列
  • 如果你的Vim支持它,设置一个很好的语法高亮,隐藏分隔符

  • @crw `:设置 ft=text` (2认同)

Lmw*_*ngi 9

您可能希望将sc视为替代方案..看看这个linux日志页面

  • 另一个选择是xsv。与电子表格不同,它使用管道方法。它在大型文件上表现出快速且高效的内存功能,因此脱颖而出https://github.com/BurntSushi/xsv (2认同)

Del*_*ani 7

以下是在vim中使用CSV文件的一些提示:

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

我不确定是否有一种方法可以在列中显示它而不使用逗号,但该链接中的提示允许vim非常容易地遍历和操作CSV.


Joh*_*ior 7

我已经尝试过Christian的csv插件,它可以快速查看csv文件,特别是当你需要查看许多不同的文件时.

然而,当我打算在同一CSV文件中寻找超过几次,我将文件导入sqlite3的,这使得进一步的分析多少更快,更容易执行.

例如,如果我的文件如下所示:

file.csv:
field1name, field2name, field3name
field1data, field2data, field3data
field1data, field2data, field3data
Run Code Online (Sandbox Code Playgroud)

我创建了一个新的sqlite db(从命令行):

commandprompt> sqlite3 mynew.db
Run Code Online (Sandbox Code Playgroud)

然后在db中创建一个表以将文件导入:

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

现在新表'mytable'包含文件中的数据,但第一行是存储您通常不想要的标题,因此您需要删除它(在字段值周围使用单引号;如果您使用double引用你将删除所有行):

sqlite> delete from mytable where field1name = 'field1name';
Run Code Online (Sandbox Code Playgroud)

现在,您可以轻松查看数据,按复杂公式过滤,按多个字段排序等.

sqlite> select * from mytable limit 30;
Run Code Online (Sandbox Code Playgroud)

(对不起,这变成了一个sqlite教程,但似乎每次我导入sqlite,我最终花费更多的时间使用vim/less/grep/sort/cut比我刚刚导入的第一名).


mec*_*ner 6

还有rainbow_csv vim插件.它将突出显示不同"彩虹"颜色的csv/tsv文件列,并允许您使用Python或JavaScript表达式编写类似SQL的SELECT和UPDATE查询.

演示rbql截屏视频