私の単純なvimスクリプトがタブ文字で機能しないのはなぜですか?

私の単純なvimスクリプトがタブ文字で機能しないのはなぜですか?

これは私のvimの単純なスクリプトです。

#!/usr/bin/vim

%norm f^ID
%norm $i,
%!awk '{ for (i=1;i<=NF;i++ ) printf $i " " }'

1行目はタブ文字(^ I)の後のすべての内容を削除し、2行目は各行の後に「、」を追加し、3行目は行を列に変換します。 3つの別々のコマンドを使用すると完璧ですが、そうすると

:source myscript.vim

2番目と3番目のコマンドのみが適用され、最初のコマンドにはタブ番号が付けられています。なぜ?

ベストアンサー1

^I2文字の^場合、I最初のコマンドはその文字を見つけてその行の先頭に^()を挿入します。ID

以下を挿入する必要があります。言葉Ctrl+V Tab^これでタブ文字(with)とがありますI

または(同じもの)を使用してください。

%!cut -f 1 | awk -v ORS=', ' '{ print }'

これにより、タブで区切られた最初の列が選択され、cut結果行がコンマ区切りの列に再フォーマットされます。

短いが、結果列の間にカンマ(カンマスペースではない)だけがあります。

%!cut -f 1 | tr '\n' ','

おすすめ記事