Excluir / eliminar linhas da linha atual até e incluindo a linha contendo o padrão de pesquisa

4

Suponha que eu tenha o seguinte texto (o cursor está no meio da primeira palavra 'begin'.

blah blah blah blah stuff stuff stuff
\\begin{tabular}
{
|p{0.25\textwidth}
|p{0.2\textwidth}
|p{0.5\textwidth}
|}
\hline
Item & Type & Notes\\hline
Text text text text text text text text &
Text text text text text &
Text text text text text text text text text text text text text text text text text
  text text text text text text\\hline

Installation instructions &
.txt / .html / TBD &
Installation help should be conspicuous but not the central item\\hline
\end{tabular}
blah blah blah more stuff more stuff

Eu quero cortar a mesa e movê-la para outro lugar. As linhas são realmente muito mais longas, então elas envolvem várias vezes e não consigo determinar com facilidade quantas linhas quero cortar.

eu digito d 2 / a r } / e para excluir até que a segunda correspondência de "ar" "pare no 'e'nd do padrão.

Mas isso vai do meio da palavra 'começar' até o fim de onde eu quero cortar. Eu gostaria de pegar linhas completas e eu sinto que deveria haver um atalho para isso em menos de 6 teclas. Eu não estou usando o Latex-VIM porque ele não gosta da minha instalação padrão do Windows do GVIM, então não, eu não posso (até onde eu sei) pegar facilmente do \begin para o \end . Eu adoraria ser provado errado nisso.

Sim, esta questão é potencialmente um cruzamento de sites do StackExchange, incluindo Tex, StackOverflow e Unix. Sinta-se à vontade para sugerir um site melhor para isso.

    
por Still.Tony 10.02.2014 / 20:50

2 respostas

4

Com um comando Ex:

:,/\e/d

Divisão:

  • Estrutura de um comando Ex: :{range}command{address} .
  • É possível usar números de linhas, marcas ou padrões de pesquisa para delimitar o intervalo. Começamos com a linha atual, geralmente . , mas ela pode ser ignorada como aqui e terminamos com um padrão correspondente a \end .
  • Nós d eletamos as linhas nesse intervalo.

Com uma combinação de marcas de pesquisa e contextuais:

/\e<CR>
d''

Divisão:

  • Pesquise \e .
  • d elete daqui para a linha da posição anterior do cursor.

Com o modo visual:

v/\e<CR>
V
d

Divisão:

  • Selecione visualmente daqui para \e .
  • Mude para o bloco de linha visual.
  • d elete as linhas na seleção.

Variação do método acima com um comando Ex em vez de um comando no modo normal:

v/\e<CR>
:'<,'>d

Divisão:

  • Selecione visualmente daqui para \e .
  • Entre no modo de linha de comando com : , o intervalo '<,'> é inserido automaticamente.
  • d elete as linhas na seleção.
por 10.02.2014 / 22:41
2

Este é um dos recursos que você obtém com o plugin matchit, parte da distribuição padrão do vim. Para fins de teste, faça isso de forma interativa; se você gosta, então você pode fazer isso a partir do seu arquivo vimrc:

:runtime macros/matchit.vim
:filetype plugin on

Após esses dois comandos (interativamente ou durante a inicialização como parte do seu arquivo vimrc)

:e foo.tex

e, em seguida, com o cursor em qualquer lugar em \begin{tabular} , use V% para selecionar todo o ambiente. Não tenho certeza se você considerará um bug ou um recurso, mas isso incluirá linhas inteiras, o que significa que você obterá o "\\" no início.

Isso também deve lidar corretamente com ambientes aninhados e linhas comentadas.

Coincidentemente, o mantenedor do matchit.vim é o mesmo que o mantenedor do ftplugin padrão para tex.

:help matchit-install
:help :filetype-plugin-on
    
por 10.02.2014 / 23:52

Tags