web-dev-qa-db-ja.com

Vim / Exでシングルドットを配置

私はvimワンライナーをいじっていて、逃げることができません。 vimexモードの追加コマンドの文字。

基本的に、

vim -En '+a|Hello World' '+p' '+q!' -

「HelloWorld」を印刷します

だが、

vim -En '+a|.' '+p' '+q!' -

何も印刷しません。 。 1行でそれ自体で追加コマンドが終了するため、印刷できません。

残念ながら、これは、コマンドをチェーンできるvim-Eコマンドスクリプトを記述できないことを意味します。最初のvim呼び出しがExコマンドを構築し、2番目がそれらを解釈するこのようなものが必要です

vim -En '+a|aConvoluted Hello World
.
Qp
QZQ
' | vim -En

しかし、最初の呼び出しは失敗します:からのすべて。 onは無視されます。

ドットをエスケープする方法はありますか? (これはちょっとしたコードゴルフなので、すべてvimのみにする必要があります)

興味のある人のためのゴルフ規則:

セットb、c、d、e、f、k、p、r、s、t、{、}、$、&、;、/、:、@、#,(、)、<の文字はありません、>、!すべて大文字を使用できます。

6
dhakim

これは少し不自然かもしれませんが、私にとっては単一の期間を出力します。

vim -En '+a|.x' '+s/x//' '+p' '+q!' -

(ゴルフについておっしゃっていたので、比較的多くのキャラクターが追加されるため、これではうまくいかないかもしれません。特定の制約がある場合は、必ず詳しく説明してください。)

1
B Layer