Wie kann ich in LaTeX schnelle Umgebungs- oder Befehlsänderungen vornehmen?

7

Ich habe einen großen Bestand an LaTeX Text (ein ganzes Buch) , die hat \textit{}und \textbf{}Befehle an einigen Stellen ausgetauscht. An anderen Stellen fehlen sie völlig. Wie erstelle ich schnelle Verknüpfungen in Vim, damit ich Folgendes tun kann:

  • Wechsel zwischen \textit{}zu \textbf{}und umgekehrt , ohne zu beeinflussen , was drin ist {}.
  • Schließen Sie ein Wort oder eine Phrase unter dem Cursor in einen der Befehle \textit{}oder ein \textbf{}.
  • Entfernen Sie entweder die Befehle \textit{}oder \textbf{}, wenn sie nicht benötigt, aber versehentlich eingegeben wurden.
mkc
quelle
Dies sind übrigens keine Umgebungen, sondern Befehle. Es gibt einen Unterschied .
Muru

Antworten:

7

Wenn Sie das Vimtex-Plugin verwenden , können Sie:

  1. Ändern Sie einen umschließenden Befehl mit csc:

    Geben Sie hier die Bildbeschreibung ein

  2. Laut Hilfe ist ein yscden Befehlen entsprechender Befehl surround.vimnicht verfügbar, kann aber hinzugefügt werden. Siehe :h vimtex-faq-surround:

                                                              *vimtex-faq-surround*
    Q: |vimtex| provides `dse`, `dsc`, `cse`, and `csc`.  These seem to be inspired by
       |surround.vim|.  Does |vimtex| also provide the corresponding `yse` and `ysc`?
    A: The mentioned mappings are indeed inspired by |surround.vim|.  However,
       |vimtex| does not provide `yse` and `ysc`.  If you use |surround.vim|, then
       the asked for mappings may be easily added if one adds the following lines
       to ones `vimrc` file: >
    
      augroup latexSurround
         autocmd!
         autocmd FileType tex call s:latexSurround()
      augroup END
    
      function! s:latexSurround()
         let b:surround_{char2nr("e")}
           \ = "\\begin{\1environment: \1}\n\t\r\n\\end{\1\1}"
         let b:surround_{char2nr("c")} = "\\\1command: \1{\r}"
      endfunction
    <
    
  3. Löschen Sie einen umschließenden Befehl mit dsc.

muru
quelle
Danke, ich werde es überprüfen und Sie wissen lassen, wie es funktioniert hat.
mkc
4
Ich möchte nur erwähnen, dass die derzeitige Unterstützung für Befehle nur sehr einfach ist. Dies liegt daran, dass es wirklich ziemlich schwierig ist, LaTeX / TeX-Befehle zu analysieren. Wie kann ich die Anzahl der Argumente für einen bestimmten Befehl ermitteln? (Antwort: Ich kann nicht, wenn ich die Befehlsdefinition nicht kenne.) Funktioniert also cscnur, wenn sich der Cursor auf dem eigentlichen Befehl oder dem ersten Argument befindet.
Karl Yngve Lervåg