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
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 isgit 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
ésdiffo!
. - Ha egy nyitott fájlból indul ki,
File1
, használhatja a:vert diffs File2
elemet is aFile2
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 adiffoff!
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.
: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.vd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
fájlomban, és meghívom avd file1 file2
paranccsal. Adiff
segítségével állapítja meg, hogy a fájlok különböznek-e egymástól, és csak akkor nyitja meg avimdiff
-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.