Может ли vim рассматривать сложенную секцию как движение?

427
Simon Walker

У меня есть сложенный раздел в текстовом документе. Могу ли я использовать складку как движение в vim, точно так же, как слово или слово - это движение w/W?

Например, dawудаляет вокруг слова, так

This is a |t|est 

с курсором в ||, и в normalрежиме, если я запускаю, команда dawстанет

This is |a| 

Могу ли я сделать это со сложенным разделом (используя foldmethod=markerлатексный код) ?

\begin%{{{ a = 10 \end%}}} 

после того, как движение сгиба будет удалено. Возможно ли это в других foldmethodрежимах?

Что касается моего вопроса, я знаю, что могу просто сложить секцию, а затем удалить «линию», но мне было интересно, можно ли рассматривать саму складку как движение.

3
Это будет движение, не зависящее от того, сложен ли сгиб или нет Simon Walker 11 лет назад 0
Вы пробовали "грызть" на закрытой складке? romainl 11 лет назад 0

3 ответа на вопрос

4
romainl

Я не знаю, что такое в Vim. Но можно использовать [zи ]zдля перехода к началу и концу сгиба.

Это, кажется, делает трюк:

xnoremap iz :<C-U>silent!normal![zV]z<CR> onoremap iz :normal viz<CR> 

Вы можете использовать его как iwи друзей:

ciz diz viz yiz 
1
taketwo

Взгляните на плагин vim-textobj-fold . Он предоставляет текстовые объекты для складывания, что, я думаю, именно то, что вы просите.

1
gib

Связать это здесь, так как я нашел это полезным:

https://www.reddit.com/r/vim/comments/10cqgd/looking_for_a_languageaware_block_selection/c6cpyrg

Короткий ответ: вы можете сделать это:

" Create text objects using [z and ]z vnoremap if :<C-U>silent!normal![zjV]zk<CR> onoremap if :normal Vif<CR> vnoremap af :<C-U>silent!normal![zV]z<CR> onoremap af :normal Vaf<CR> 

Это дает вам ifи af, которые работают, как ipи ap.