Hogyan használhatom a vim-et diff eszközként?

A vim-et használom elsődleges szerkesztőként.

A vim-et a fájlok diffundálásához és a fájlok módosításához is szeretném használni, miközben a diff az egyszerű változtatások kijavításához (a legtöbb diff technika helyett, amelyek a diff / fix / diff / fix ciklusok).

Ezen kívül vannak egyszerű módszerek a vim integrálásához a diff eszközökbe, amelyeket a forrás vezérlő eszközök / helyek használnak (Kifejezetten a gitre gondolok, de biztos vagyok benne, hogy más embereket is érdekelne más forrás-ellenőrző eszközökkel / webhelyekkel való integráció.)

Megjegyzések

  • meg kell próbálni a vim-fugitive alkalmazást. Ez hozzáadja a :Gdiff és a :Gvdiff parancsokat, mindkét paranccsal láthatja az aktuális puffer egymás melletti különbségét az aktuális puffert a git kezeli. Azt is segíti, hogy három ablak elrendezésben oldja meg a konfliktusokat, amikor egyes fájlokon összeütközések vannak.
  • Ez az egyszerű funkció megtalálható a bashrc vd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; } fájlomban, és meghívom a vd file1 file2 paranccsal. A diff segítségével állapítja meg, hogy a fájlok különböznek-e egymástól, és csak akkor nyitja meg a vimdiff -t. Különben a kagylóban maradok. A szintaxis kiemelését a Vimben is letiltom, mert azt zavarónak találom diffúzkor. Csak két fájllal működik.

Válasz

A vim beépítette ezt a funkciót (a megfelelő parancssori zászlóval) ).

vim -d <file1> <file2> 

Ez megnyitja az egyes fájlokat a nézetben, és kiemeli a különbségeket.
Minden azonos kód folded el, így nem kell azonos kódot néznie, vagy azonos kód hatalmas darabjait kell görgetnie.

De létezik egy olyan burkoló alkalmazás is, vimdiff, amely helyesen hívja meg a vim-et a megfelelő zászlókkal.

vimdiff source1.cpp source2.cpp 

Ha git-t használ, beállíthat egy külső diff eszközt. Így könnyen beállítható, hogy a vimdiff legyen a git diff eszköze.

git config --global diff.tool vimdiff 

A vimdiff használatakor bármelyik oldalt szerkesztheti, és a diff kiemelés lépést tart a megjelenítéshez. te a különbségek.

Megjegyzés: Git diff-ről történő szerkesztéskor. Ha megpróbálja szerkeszteni a fájl adattárban tárolt verzióját, a kilépéskor a módosítások elvetésre kerülnek (a git nem bízik meg bennetek az eredetiben, így a tmp másolattal szemben különbözik), de a helyi másolatot szerkesztheti a szíve tartalmához és mentse át a jelenlegi verziójára.

Néhány alapvető parancs, amely hasznos a vimdiff

dp diffput: puts changes under the cursor into the other file making them identical (thus removing the diff). do diffget: (o => obtain). The change under the cursor is replaced by the content of the other file making them identical. ]c Jump to the next diff [c Jump to the previous diff 

Egyéb vim-beállítások, amelyeket a vimdiff-sel történő kiemeléssel dolgozok

if &diff highlight! link DiffText MatchParen endif 

Ez kikapcsolja a kiemeltet a megváltozott kód bitjein. Tehát a megváltozott sor ki van emelve, hogy észrevegyem a változásokat, de a tényleges megváltozott szöveg kiemelkedik a sorból (mivel nincs kiemelve).

Megjegyzések

  • Akár 4 puffert is kezel, ez nagyszerű a konfigurációs fájlok összehasonlításához
  • Használhatja az :diffthis parancsot is egy diff, amikor a Vim már fut.
  • És: diffoff a kikapcsoláshoz. Úgy gondolom, hogy hasznos lenne a vim ‘ dokumentációra mutató link: vimdoc.sourceforge.net/htmldoc/diff.html
  • Számomra a git config --global diff.tool vimdiff után is git diff még mindig mindent megmutat, mintha nem változtatnék semmit.
  • próbálkozzon git difftool

Válasz

Ha Ön egy megnyitott fájl szerkesztése és összehasonlítása egy másik fájllal anélkül, hogy bezárná a jelenlegi fájlt:

Nyissa meg az új fájlt osztott képernyőn:

Függőleges felosztás esetén:

:vs otherFile 

vagy vízszintes felosztás:

:split otherFile 

Váltás a kurzorokra másik felosztott képernyőre:

ctrl+w ctrl+w 

A “diff mode” meghívása a fájlban:

:diffthis 

Váltás másik fájlra és a “diff mode” meghívása:

:diffthis 

A “diff mód” kikapcsolásához:

:diffoff 

Megjegyzések

  • A betwee váltásának elkerülése érdekében n a puffereket, amelyeket :windo diffthis is használhat
  • @statox: a diffoff esetén is működik, tehát :windo diffthis és :windo diffoff két nyitott ablak indításához és leállításához diff . Vagy rövidítve: :windo difft és diffo!.
  • Ha egy nyitott fájlból indul ki, File1, használhatja a :vert diffs File2 elemet is a File2 megnyitásához egy jobb oldali függőleges hasításban, és a .

Válasz

Az alábbi beállítást az .gitconfig mezőben helyezheti el a fájl a jelenleg bejelentkezett felhasználó %homepath% (vagy %userprofile%) könyvtárában található:

[diff] tool = vimdiff 

Ez lehetővé teszi a git bash eszköz számára a vimdiff használatát külső diff eszközként is.

Válasz

A következő a git configom:

https://github.com/tracyone/dotfiles/blob/master/.gitconfig

[core] editor = vim [diff] tool = vimdiff [merge] tool = vimdiff conflictstyle = diff3 [difftool] prompt = 0 

Válasz

A NeoVim esetében beállíthatja a ~/.gitconfig a következő parancsokkal

git config --global merge.tool nvim git config --global mergetool.keepBackup false git config --global mergetool.nvim.cmd $"nvim -d $LOCAL $REMOTE $MERGED -c \"$wincmd w\" -c \"wincmd J\"" 

A ~/.gitconfig -nek ekkor kell kinéznie:

[merge] tool = nvim [mergetool] keepBackup = false [mergetool "nvim"] cmd = nvim -d $LOCAL $REMOTE $MERGED -c "$wincmd w" -c "wincmd J" 

További információ arról, hogyan konfigurálhatja kedve szerint, lásd: Nvim dokumentáció: diff .

Válasz

Csak három ülést látok vim difftoolként való használatára. Az alábbiakban röviden ismertetjük őket:

  • A git difftool esetében tegye a következőket a ~/.gitconfig mezőbe:

    [core] editor = vim [diff] tool = vimdiff [merge] tool = vimdiff conflictstyle = diff3 
  • A vim fájljának diff-eszközként történő megnyitásához a következőket teheti:

    vimdiff file1.ext file2.ext # for vim nvim -d file1.ext file2.ext # for neovim 
  • Az aktuálisan aktív pufferek diff nézetének megszerzéséhez, azaz az összes olyan pufferhez, amelyhez ablak van rendelve az aktuálisan aktív lapon, a következőket teheti:

    :windo diffthis " to get diff view :windo diffoff " to remove diff view 

További információ: :h diff

Megjegyzések

  • ha még csak egy fájl van megnyitva: :vert diffs File2 a File2-vel való eltéréshez.

Válasz

itt tenném:

  • nyisson meg egy ablakot az első fájllal (vagy szöveges tartalommal, ha beilleszt adatok)
  • nyissa meg a következő fájlt / ablakot a :vnew használatával (hogy mindkét ablak egymás mellett legyen) vagy :new ( hogy az ablakok felül legyenek és b ottom). ha van egy megnyitni kívánt fájlja a második ablakban, akkor az ilyen elérési utat beillesztheti: :vnew /path/to/secondfile.txt
  • az F8 használatával válthat egy diff változó függvényként mód be- és kikapcsolása

itt van az az egyéni függvény, amely a ~/.vimrc könyvtárban található:

nmap <silent> <F8> :call ToggleDiff()<CR> imap <silent> <F8> <C-O>:call ToggleDiff()<CR> function ToggleDiff () if (&diff) set nodiff noscrollbind else " enable diff options in both windows; balance the sizes, too wincmd = set diff scrollbind nowrap number wincmd w set diff scrollbind nowrap number wincmd w endif endfunction 

Megjegyzések

  • használhatja a :diffthis és a diffoff! tehát nem ‘ nem kell minden diff beállítást magadnak beállítanod (pl. a kurzorbindot is a diffmode állítja be)

Válasz

A .vimrc által elfogadott néhány hasznos parancs diff módban (alsó rész). Ha normál módban szerkeszt, akkor a beállítás visszaáll (felső rész). Egyszerűen átmásolhatja a .vimrc fájlba.

nmap <silent> <F2> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR> inoremap <Esc>Oq 1 inoremap <Esc>Or 2 inoremap <Esc>Os 3 inoremap <Esc>Ot 4 inoremap <Esc>Ou 5 inoremap <Esc>Ov 6 inoremap <Esc>Ow 7 inoremap <Esc>Ox 8 inoremap <Esc>Oy 9 inoremap <Esc>Op 0 inoremap <Esc>On . inoremap <Esc>OQ / inoremap <Esc>OR * inoremap <Esc>Ol + inoremap <Esc>OS - inoremap <Esc>OM <Enter> nnoremap <Esc>OQ B " / nnoremap <Esc>OR E " * if &diff map <Esc>Oq zc " 1 close a fold map <Esc>Or <down> " 2 cursor down map <Esc>Os ]c " 3 next diff nmap <Esc>Ot <left> " 4 curosor left nnoremap <Esc>Ou <c-w>w " 5 jump to next file map <Esc>Ov <right> " 6 cursor right map <Esc>Ow zo " 7 open a fold map <Esc>Ox <up> " 8 curosor right map <Esc>Oy [c " 9 prefious diff map <Esc>Op 0 " 0 0 nmap <Esc>On . " . . nmap <Esc>OQ B " / back one word nmap <Esc>OR E " * end of word nmap <Esc>Ol dp " - diffput nmap <Esc>OS do " + diffget nmap <Esc>OM :diffupdate " Enter endif 

Természetesen megváltoztathatja a beállításokat. Ha másik parancsot szeretne felvenni a ” 0 ” fájlba, akkor a ” Op ” pl a ” za ” paranccsal, amely a hajtogatás és a kibontás között vált:

 nmap <Esc>Op za " 0 0 

Kérjük, vegye figyelembe a ” térkép ” és ” nmap ” a kulcstól függően.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük