1

以下は、Windows システム クリップボードの内容です。

  • :関数 CurrentLineLength
  • : len = strlen(getline("."))
  • : レンズを返す
  • :関数終了

コロンを押して r を制御し、次にシフト 8 を押して、システム クリップボードの内容を貼り付けます。

return を押すと、vim が E488: Trailing Charactersで戻ってきます

そこにいくつかの ^M 文字が表示されますが、それらを削除しても解決しません。関数を .vim ファイルに貼り付けてそのように読み取ることができることは知っていますが、それは不自由ではありませんが、vim スクリプトの例をいくつか見ていくと、これがあれば便利です。

関数の入力方法に何か特別なことはありますか? システムのクリップボードから貼り付けることは可能ですか?

ありがとう!

4

2 に答える 2

3

複数行をコマンドモードに貼り付けるのはよくわかりませんが、関数をレジスタに入れてレジスタを実行するだけで同じことが実現できます(マクロと同じ)。

また、貼り付けたように、Vim はその機能を気に入らないようです。以下にいくつかの変更を加えました。以下をシステムのクリップボードにコピーし、@*通常モードから押すと動作します。

:function CurrentLineLength()
: let len = strlen(getline("."))
: return len
:endfunction
于 2009-03-23T23:00:00.883 に答える
1

Vim では、コマンド モードでキャリッジ リターンを使用しても問題はありません (これが ^M 文字です)。貼り付けているコードには他の文字が含まれていると思います。Web ページから貼り付けている場合、これが問題になる可能性が非常に高くなります。クリップボードの内容をファイルに入れてみて、それが本当に期待どおりかどうかを確認してください (すべての空白文字を含む)。

于 2009-03-23T22:36:12.737 に答える