带有参数的vim start文件,该参数在整个文件

时间:2015-05-29 10:21:56

标签: csv vim command-line parameters vim-plugin

我使用csv.vim插件。当我启动一个csv文件时,该插件完成了他的工作。通常我需要命令:ArrangeColumn,它作用于光标的当前行。为了激活整个文件,我选择所有内容并运行命令。

现在,我希望在打开csv文件时始终拥有此功能。我查看modelines作为选项,但在那里你只能设置选项。无法调用命令。

另一个替代方法是使用参数-c启动csv文件,但我不知道如何选择整个文件来运行命令:ArrangeColumn

gvim -c :ArrangeColumn foo.csv # Arranges the first line

我通常使用:%s执行此操作,但这不起作用?

gvim -c %sArrangeColumn foo.csv # will clearly will not work.... 

如何启动csv文件并在整个文件上初始调用命令:ArrangeColumn

3 个答案:

答案 0 :(得分:1)

你很亲密。在:%s中,%范围1,$寻址整个缓冲区的快捷方式),s[ubstitute]是命令。由于:ArrangeColumn也需要一个范围,因此您也可以添加%

gvim -c %ArrangeColumn foo.csv

有关详细信息,请参阅:help :range

替代

如果要对所有 CSV文件执行此操作,可以使用以下内容创建脚本~/.vim/after/ftplugin/csv.vim

%ArrangeColumn

这将在 csv.vim插件之后执行,并将命令应用于每个打开的CSV缓冲区。您可以使用if expand('%') =~ '...'条件另外打包命令,以仅将其应用于某些CSV文件。

答案 1 :(得分:0)

通常它自己应该处理整个文件。

因此要使用要执行的命令启动gvim / vim / vi,您可以这样调用:

vim -c "call ArrangeColumn()" foo.csv

或:

vim +"call ArrangeColumn()" foo.csv

要保存并退出,请添加-cwq参数。

例如,这里是从行尾删除空格的功能:

" Removes superfluous white space from the end of a line
function! RemoveWhiteSpace()
    :%s/\s\+$//e
endfunction

所以你可以打电话:

vim +"call RemoveWhiteSpace()" foo.txt

答案 2 :(得分:0)

对于实际问题:"启动带有参数的文件,该文件在整个文件上执行"您可以使用autocmd在特定触发器上运行特定文件类型

au BufRead *.csv 1,$ArrangeColumn

每当打开或使用' ArrangeColumn'时,这将在整个文件1,$上运行e命令在csv文件上。

此外,如果需要,您可以映射一个键以重新执行:

map AC <C-C>:1,$ArrangeColumn<CR>

为自己更改主键组合(AC)。