vim 以在整个文件上执行的参数启动文件
vim start file with parameter which executes on the whole file
我使用 csv.vim 插件。当我启动一个 csv 文件时,插件会完成他的工作。我经常需要命令:ArrangeColumn
,它作用于光标所在的当前行。要安排整个文件,我 select 所有内容和 运行 命令。
现在我希望在打开 csv 文件时始终有这个。我将 modelines
作为一个选项查看,但您只能在那里设置选项。无法调用命令。
另一种选择是使用参数 -c
启动 csv 文件,但我不知道如何将整个文件 select 到 运行 命令 :ArrangeColumn
gvim -c :ArrangeColumn foo.csv # Arranges the first line
我通常用:%s
这样做,但这不起作用?
gvim -c %sArrangeColumn foo.csv # will clearly will not work....
如何启动一个 csv 文件并在完整文件上初始调用命令:ArrangeColumn
?
通常函数本身应该处理整个文件。
所以要用要执行的命令启动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
你很接近。在:%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 文件。
对于实际问题:"start file with parameter which executes on the whole file" 您可以使用 autocmd
运行 特定文件类型的特定触发器
au BufRead *.csv 1,$ArrangeColumn
只要在 csv 文件上打开或使用“e
”,这将 运行 对整个文件 1,$
使用 ArrangeColumn
命令。
此外,如果需要,您可以映射一个键以重新执行此操作:
map AC <C-C>:1,$ArrangeColumn<CR>
为自己更改主键组合 (AC
)。
我使用 csv.vim 插件。当我启动一个 csv 文件时,插件会完成他的工作。我经常需要命令:ArrangeColumn
,它作用于光标所在的当前行。要安排整个文件,我 select 所有内容和 运行 命令。
现在我希望在打开 csv 文件时始终有这个。我将 modelines
作为一个选项查看,但您只能在那里设置选项。无法调用命令。
另一种选择是使用参数 -c
启动 csv 文件,但我不知道如何将整个文件 select 到 运行 命令 :ArrangeColumn
gvim -c :ArrangeColumn foo.csv # Arranges the first line
我通常用:%s
这样做,但这不起作用?
gvim -c %sArrangeColumn foo.csv # will clearly will not work....
如何启动一个 csv 文件并在完整文件上初始调用命令:ArrangeColumn
?
通常函数本身应该处理整个文件。
所以要用要执行的命令启动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
你很接近。在:%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 文件。
对于实际问题:"start file with parameter which executes on the whole file" 您可以使用 autocmd
运行 特定文件类型的特定触发器
au BufRead *.csv 1,$ArrangeColumn
只要在 csv 文件上打开或使用“e
”,这将 运行 对整个文件 1,$
使用 ArrangeColumn
命令。
此外,如果需要,您可以映射一个键以重新执行此操作:
map AC <C-C>:1,$ArrangeColumn<CR>
为自己更改主键组合 (AC
)。