2012-03-26 13 views
16

In Vim kann man zwei Linien verbinden, indem man das Kapital J schreibt. Jedoch sind diese normalerweise durch ein Leerzeichen verbunden.Wie ändere ich das Join-Zeichen in Vim?

Ich erinnere mich, dass es eine Möglichkeit gab, das für den Beitritt verwendete Zeichen durch Setzen einer Variablen zu ändern, aber ich kann es nicht wieder finden.

Ich würde es schätzen, wenn jemand mich erinnern könnte, oder bestätigen, dass es nicht getan werden kann.

+3

Als Reaktion auf die zwei Stimmen, die knapp sind, gibt die FAQ an, dass Fragen zum Thema "von Programmierern häufig verwendete Software-Tools" Thema sind. Daher sollte diese Frage nicht als off-topic geschlossen werden. – DrAl

Antwort

10

Wenn ich nur ein paar Zeilen anschließen möchten, verwende ich eine 3-Tasten-Combo (Normalbetrieb):

Jr, 

, das Verbindungs ​​Charakter zu sein.

Wenn ich mehr Linien verbinden oder sogar Linien in Gruppen verbinden möchte, verwende ich die vorherige Kombination mit einem Makro.

Zum Beispiel zur Transformation 3 Zeilen in einer 3 Spalten CSV-Tabelle, ich diese Makro aufzeichnen (zugewiesen Brief j natürlich):

qjJr,Jr,jq 

Also, mit @j 3 Linien verbinden , mit und geht an die nächste Zeile.

[email protected] konvertiert 10 Zeilen.

-1

Es ist Mapping. Sie können das Tutorial in vim wikia lesen: Mapping keys in vim

Versuchen Sie den folgenden Befehl im Befehlsmodus, und versuchen Sie zu drücken. Diese Arbeit sollte :)

:map <space> J 
+0

Ich habe das Gefühl, dass es etwas weniger allgemeines geben sollte. – merlin2011

+0

Sie haben die Frage falsch verstanden. Es wird nicht gefragt, welche Taste gedrückt werden soll, um den Zeilenverbindungsbefehl aufzurufen. Es fragt, welches Zeichen zwischen den verbundenen Zeilen eingefügt wird. –

5

Es gibt nicht eine Einstellung ist, dass Sie dies direkt tun können, finden Sie unter:

:help J 

insbesondere den Text unter der Liste der Befehle.

Ein paar Möglichkeiten, wie Sie dies tun könnte:

:nnoremap J gJi.<ESC> 
" or 
let joinchar = ';' 
nnoremap J :s/\n/\=joinchar/<CR> 

Letzteres Sie es durch eine Änderung der joinchar Option on the fly ändern können.

1

Probieren Sie etwas wie dies in Ihrem .vimrc:

nnoremap Y Jxi*<Esc>

Es wird Y neu zuordnen, die Linien mit einem * zu verbinden.

0

Von http://vim.wikia.com/wiki/Remap_join_to_merge_comment_lines

diese in deine .vimrc:

function! JoinWithLeader(count, leaderText) 
    let l:linecount = a:count 
    " default number of lines to join is 2 
    if l:linecount < 2 
    let l:linecount = 2 
    endif 
    echo l:linecount . " lines joined" 
    " clear errmsg so we can determine if the search fails 
    let v:errmsg = '' 

    " save off the search register to restore it later because we will clobber 
    " it with a substitute command 
    let l:savsearch = @/ 

    while l:linecount > 1 
    " do a J for each line (no mappings) 
    normal! J 
    " remove the comment leader from the current cursor position 
    silent! execute 'substitute/\%#\s*\%('.a:leaderText.'\)\s*/ /' 
    " check v:errmsg for status of the substitute command 
    if v:errmsg=~'Pattern not found' 
     " just means the line wasn't a comment - do nothing 
    elseif v:errmsg!='' 
     echo "Problem with leader pattern for JoinWithLeader()!" 
    else 
     " a successful substitute will move the cursor to line beginning, 
     " so move it back 
     normal! `` 
    endif 
    let l:linecount = l:linecount - 1 
    endwhile 
    " restore the @/ register 
    let @/ = l:savsearch 
endfunction 

nnoremap <space> :<C-U>call JoinWithLeader(v:count, '"')<CR> 

Auf diese Weise können Sie auch sonst J etwas neu zuordnen.

0

Es wird schneller, wenn Sie das Ende der Zeile mit einem Komma (oder registriere dich jetzt Zeichen)

:%s/$/, 

ersetzen und dann mehr Verbindungslinien entweder durch einen Bereich bereitstellt, oder durch die Linien im visuellen Modus der Auswahl und Nutzung der join command

10J 
Verwandte Themen