5

Vim の大きな強みの 1 つはobject-selectで、単語、段落、さまざまな区切り文字内のコンテンツをすばやく操作できます。

例えば、

vi{

{} 中かっこのペア内のすべてを選択します。

ヒアドキュメントまたはヒアドキュメントを選択するための同等の機能はありますか:

<<<HTML
    ....
    ....
HTML;

ErichBSchulz の回答に基づいて、ヒアドキュメントの内部選択について次のように思いつきました。

nmap <F6> ?<<<<CR>w*kV?<<<<CR>j

?<<<<CR>w    " find beginning tag (after <<<)
*k           " find matching end tag and go up 1 line
V            " enter visual mode
?<<<<CR>j    " find beginning tag and go down 1 line
4

4 に答える 4

4

ヒアドキュメントを選択するには、通常、カーソルを最初の行のヒアドキュメント識別子の上に置き、V*

V行の選択*を開始し、検索を開始し、識別子の次の一致、ヒアドキュメントの最後に移動します...

于 2010-02-26T18:36:12.613 に答える
2

独自のテキスト オブジェクトを定義できるこのプラグインがあります。

http://www.vim.org/scripts/script.php?script_id=2100

'yih' (ヒアドキュメントのヤンク) と言うことができるように定義するといいのではないかと思います。

私はこれをいじっていないことに注意してください。

視覚的な選択だけが必要な場合は、可能です。

 nnoremap <leader>ih ?HTML<cr>V/HTML<cr>
于 2010-02-27T02:07:51.513 に答える
2

空行で終了する<<''ヒアドキュメントは簡単です。すでに開始点 ( ?<<^M^M) にいる場合:v}ここから空行までを選択します。

それ以外の場合、あなたの例では、私が考えることができる最高のものはv/^HTML.

于 2010-02-26T18:37:25.057 に答える
1

以前の投稿について考えて、一歩近づけようとしています。これは 100% 信頼できるものではありません (つまり、開始タグがヒアドキュメント内にあると壊れますが、次のようなものです:

?<<< "find begining
w    " go to starting tag
*    " find starting tag
v    " enter visual mode (could use Upper V to do an 'ambientish' object select 
n    " find end tag
e    " optional include end tag

編集: Ken は上記のようにシーケンスを改善したので、'inner' ヒアドキュメント選択のために彼のより良いキー マッピングを使用することをお勧めします:

nmap <F6> ?<<<<CR>w*kV?<<<<CR>j

(これは、php スタイルのヒアドキュメントに基づいています)

于 2012-01-18T00:05:14.897 に答える