2017-01-31 1 views
0

Ich verwende vi als Editor der Wahl für Fortran-Programmierung. Manchmal möchte ich das 6. und das 80. Zeichen einer bestimmten Zeile durch & ersetzen. Zum Beispiel in dem Fortran-Programm:Wie setze ich das Zeichen '&' in die 6. Spalte und 80. Spalte in vi

 Program Test 
     real*8 x 
c 
     write(*,*) 
    1 'Hello World' 
    2 , x 
     end 

die Zeichen 1 und 2 sollen durch ein & nicht in der gesamten Datei ersetzt werden, sondern auf der ‚aktuelle Zeile‘. Kann ich dafür eine Funktion oder einen "Hotkey" erstellen? Außerdem möchte ich noch eine & in der 80. Spalte setzen.

+0

Meinst du 7. Spalte? Die obigen "1" und "2" befinden sich in Spalte 7 (vim zählt wie die meisten Editoren Spalten, die mit 1 beginnen). –

+0

ach das ist ein Formatierungsproblem während die Frage typisch ist. Ich meine, 1 und 2 sollte in der 6. – wander95

Antwort

1

Zwei Ansätze

:s/\v(.){79}\zs./\& 

Oder

80|r& 

Wo 80| zum 80. Spalte springt.

Die meisten speichern diese letztere Möglichkeit in einem Makro. Es kann auch in ein Mapping gespeichert werden (:nnoremap µ 80|r&). Wenn jedoch nicht so viele Zeichen vorhanden sind, müssen Sie entweder die Zeile vervollständigen oder einfacher mit der Option 'virtualedit' auf all arbeiten.

+0

sein, obwohl es einfach ist, kann ich '80 | r &' zu einem besser lesbaren Namen in vimrc oder etwas? – wander95

+0

80 | springt zum Zeilenende, das vor der Spalte 80 steht – wander95

+0

Es liegt an Ihnen, eine Tastatur zu finden, an die Sie sich erinnern werden. In meiner Antwort habe ich 'μ' vorgeschlagen. Es kann sein, was immer du willst. In Bezug auf das Ende der Linie ist die einfachste Lösung: "virtualedit = all" zu setzen. Andernfalls müßten wir 'repeat ('', 80-col ('$')). '&'' Einfügen oder die Ersetzung in Abhängigkeit vom 'col ('$')' -Wert vornehmen. –

0

Sie können zu Spalte mit | gehen und ein einzelnes Zeichen durch r ersetzen. Angenommen, Sie möchten die Spalte '6' in '&' ändern. Sie können 6|r& tun.

Sie können dasselbe tun, um die 80. Spalte in "&" zu ändern, wenn die 80. Spalte vorhanden ist. Ich würde stattdessen 'A &' empfehlen (Hinzufügen '&' das Ende der Zeile hinzufügen).

Für eine schnelle Funktion in .vimrc:...

nnoremap <silent> <F8> 06 r&3<ESC>A &<ESC> 

(Karten F8, um Hot-Key '0' geht zu Beginn der Zeile dann 6 Räume unter dem Cursor ersetzen Zeichen mit '&' zu beenden. erster Teil. "A" am Ende und noch einmal "&" anhängen.

Dann drücken Sie einfach F8 auf der gewünschten Zeile.

+0

tippe ich '<-E-S-C->' oder den Escape-Schlüssel? – wander95

+0

Sie brauchen "" (die ganze Sache) in Ihrem .vimrc.Das "<>" weist vim an, einen bestimmten Schlüssel zu verwenden, wenn die Funktion ausgeführt wird. Sie können die gesamte Zeile in .vimrc einfügen (oder kopieren). –

Verwandte Themen