我使用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
?
答案 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
)。