14

私はvim(Windowsではgvim)の新しいユーザーであり、略語は時間の節約になりますが、末尾の空白を時々停止できればさらに良いでしょう。

よく使うディレクトリがいくつかあるので、_vimrcに略語とパスのペアを追加しました。

:ab diR1 C:/dirA/dira/dir1/
:ab diR2 C:/dirA/dirb/dir2/ 

など..。

ここで、入力すると、diR1 <space>空白C:/dirA/dira/dir1/[]|が表され[]、カーソルが文字である場所が表示されます|[]==空白を削除したいと思います。

これは小さな不満です:しかし、Vimで他のすべてをカスタマイズできるように見えるので、私は尋ねると思いました-vimで略語を使用するときに、末尾の空白を回避することは可能ですか?

Vim内で使用される代替ツールは良い答えです-私の目的は、頻繁に使用されるディレクトリ構造の再入力を節約することですが、ほとんどの場合、最後に何かを追加するので、カーソルを手元に置いておきますmyFile.txt

space末尾に追加する前にバックスペースする(省略形がトリガーされたという事実のために疑いの余地がない)末尾の空白myFile.txtは、すべてを何度も入力するよりも煩わしいものではありませんが、そうすることを避けることができれば理想的です.. 。

4

3 に答える 3

19

pb2qの回答は、現在のシナリオで必要なものとまったく同じですが、タイトルに示されている質問に完全には回答していません。この正確な問題は、vimヘルプファイルで対処されています。を参照してください:helpgrep Eatchar。それが与える例はこれです:

You can even do more complicated things.  For example, to consume the space
typed after an abbreviation: >
   func Eatchar(pat)
      let c = nr2char(getchar(0))
      return (c =~ a:pat) ? '' : c
   endfunc
   iabbr <silent> if if ()<Left><C-R>=Eatchar('\s')<CR>

Eatchar関数をファイルに入れて~/.vimrcから、略語でそのように使用します。

iabbr <silent> diR1 C:/dirA/dira/dir1/<c-r>=Eatchar('\m\s\<bar>/')<cr>

これにより、末尾の空白文字またはスラッシュが「食べられ」ます。コマンドラインモードで略語を実際に展開することはめったにないためiabbr、単にの代わりに使用したことに注意してください。コマンドラインモードでの略語は、searchやinput()コマンドなどの予期しない場所で展開されるため、注意abbrする必要があります。

詳細については、以下を参照してください。

:h abbreviations
:helpgrep Eatchar
:h :helpgrep
于 2012-08-08T13:21:13.187 に答える
14

これは、単なるabbrev.

ご存知のように、省略形はスペース文字によってトリガーされています。スペースは非キーワード文字であり、省略形が展開された後も残ります。

ただし、/. したがって、代わりに次のように略語を定義すると:

:ab diR1 C:/dirA/dira/dir1

つまり、末尾のパス区切り記号がないdiR1/場合は、 と入力すると、スラッシュがあるため省略形が展開され、/入力を続けてパスにファイル名を追加できます。

または、 を使用して略語展開を強制することもできますCtrl-]。つまり、略語:diR1を入力し、その後にスペースやその他の非キーワード文字を入れずに、 と入力しCtrl-]ます。省略形が展開され、挿入モードのままになり、展開されたパスにファイル名を追加できます。

をチェックしてください。略語のトリガーとなったスペース文字など、常に:help abbreviations消費するためのより複雑な構造など、他にも役立つものがあるかもしれません。

于 2012-08-08T06:43:10.247 に答える