2017-06-08 8 views
0

私はVimの中に、現在の行の末尾にテキストを追加したいと思います。私は関数の文脈の中でこれをしたいと思います。Vim関数を使って現在の行の最後にテキストを追加するには?

どうすればいいですか?テキストをエスケープ/サニタイズする必要がありますか?

+0

':時間A' ...。 。 。 。 。 – Kent

+0

@Kent、これは本当にスタートです。しかし、スクリプティングの文脈では、知る必要があるもう少しのことは、このドキュメントのこのセクションでは説明しません。 –

答えて

2

あなたはexecuteコマンドでnormalコマンドを使用することができます。

let text_for_appending = ' # a comment' 
execute "normal! A" . text_for_appending 

感嘆符が展開されることから、任意のキーマッピングを防ぐために含まれています。詳細は:help :normalを参照してください。

+1

's /:normal /&!/'です。さもなければ挿入モードマッピングが引き起こされ、OPは副作用を観察したくないようである。 –

+0

Merci、@LucHermitte。私はあなたの提案を組み込むように編集しました。私はまたあなたの答えをアップアップしました。これはかなり賢いです。 –

2

:exe + :normal!を使えば、あなたが恐れていたとして、テキストをsanatizeする必要があるかもしれません - それはあなたが使用引用符の種類に依存します、そしてあなたが:normalを強打することを忘れているかどうかに、あなたが挿入モードのマッピングや略語を持っています。 setline('.', getline('.') . text)

、Vimはあなたが追加textを解釈しようとしません。これは複雑なようだが、これは続行するより堅牢な方法です - あなたはAで物事を脱出するために開始した場合、それは方法より複雑になることができます。

関連する問題