Trädvy Permalänk
Medlem
Plats
irc
Registrerad
Dec 2004

Advanced VIM

Försöker bli effektivare i VIM med hjälp av bland annat "autocomplete" och sitta och plugga hotkeys såklart

Jag tänker fråga er lite om användbara tips, vad använder ni er av för att sparar tid?

Min vimrc:

syntax on set bs=2 set tabstop=2 set ai set number "autocomplete mha <tab> fun! InsertTabWrapper() let col = col('.') - 1 if !col || getline('.')[col - 1] !~ '\k' return "\<tab>" else return "\<c-p>" endif endfun inoremap <tab> <c-r>=InsertTabWrapper()<cr> set dictionary=.vimdict set dictionary+=% set iskeyword+=: set complete+=k

Något jag saknar som är bra att ha?

När jag använder autocomplete-funktionen så letar den igenom både sidan jag skriver och min dict-fil, kan man få så att den bara litar i min dict-fil alt. att alternativet i min dict-fil kommer upp först?
Ex:

(Här har jag skrivit m<tab>)

Ja, jag vet att det finns massa andra fina editors som klarar allt mycket enklare, typ Textmate, men trivs i vim.

Något mer ni vill tilllägga för att göra min vardag enklare att leva?
(Jag väntar på en fortsättning av din lilla guide m0REc )

Over and out!
-Simon

Behind every great fortune there is a crime. - Honoré de Balzac
simonb @ irc

Trädvy Permalänk
Medlem
Plats
::1
Registrerad
Jul 2003

Så här ser min .vimrc ut, har inte ändrat den på jätte länge, kanske dags :).

syntax on set ruler " Show the line and column number of the cursor position set ts=4 "set softtabstop=4 "set expandtab set visualbell " Blink instead of beep set cindent " Obvious, sets c-code indent set hlsearch " Highlight search set nocp " Use Vim mode, not compatible set showcmd " Show command in status line set nu " Show line numbers to the left set textwidth=80 " Set maximum length of a row set list " Display unprintable characters whit '^' " Show the first "character" in a tab as '>' and fill the rest whit '-' " Show trailing spaces as '#' set listchars=tab:>-,trail:# ab #i #include "if using a version 6 vim, enable folding if version >= 600 set foldenable set foldmethod=marker endif filetype plugin on colorscheme darkblue " Colour settings if has("filetype") set autoindent endif

EDIT: En bild kanske vore passande.

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Dec 2002

Eftersom att jag numera arbetar med programmering så har de flesta modifikationerna till min .(g)vimrc tillkommit på jobbet. Fixar upp den imorgon.

Men kort sagt så använder jag aldrig någon form av completion, föredrar att hålla saker i huvudet. Jag har dock börjat ändra mitt sätt att jobba lite i och med introduceringen av tabbar i Vim.
På jobbet kodar jag för närvarande mycket C så det brukar sluta med att varje tab innehåller en rad fönster med filer som hör ihop (en C-fil och en header-fil som enklaste exempel).

En annan sak jag har börjat använda är så kallade sessions, när man har lagt upp en layout (ett antal tabbar och fönster) man gillar och som man kommer att behöva gå tillbaka till kör man

:mks(ession)

En fil vid namn Session.vim skapas då och kan laddas med

$ vim -S [Session.vim] # fil-argumentet är inte ett måste

Se

:help mks

för mer information.

Slutligen är det härligt att se att någon läst och dragit nytta av min guide, ska fortsätta skriva på den vid tillfälle, måste tänka igenom vad jag vill ha med till nästa utgåva bara.

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Trädvy Permalänk
Medlem
Plats
Borås
Registrerad
Mar 2005

ta en titt på snippetsEmu om du gillar textmate.

Plan9 fan. In glenda we trust.

Trädvy Permalänk
Medlem
Registrerad
Aug 2005

* -kommandot och reg exp samt makron inspelning (q) har underlättat min vardag med vim avsevärt!

Kodhoppning med hjälp av ctags också.

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Nov 2004

Då vim-"scriptning" känns som ett monster i klass med c++ att lära sig så har jag aldrig orkat sätta mig in i det hela ordentligt, men ett par matnyttiga saker har min vimrc dragit på sig över åren.

func! Toggle_number() if(&number==1) set nonumber else set number endif endfunc map <unique> b :call Toggle_number()<cr> " b för att så av/på numrering av rader " har även liknande för ignorecase/noignorecase vnoremap c :s/^/#/<cr>:nohl<cr>:silent! set hl<cr> vnoremap C :s/^#//<cr>:nohl<cr>:silent! set hl<cr> " c för att kommentera ut ett visual-block " C för att avkommentera. nnoremap <c-n> :bn<cr> nnoremap <c-p> :bp<cr> " ctrl+n / ctrl+p för att hoppa mellan öppnade filer. nnoremap m :make<cr> " m för att köra make " och viktigast av allt map Q :qa!<cr> map <C-c> :q<cr> map <C-d> :qa!<cr> " ctrl+c för att stänga av vim " Q/ctrl+d för att stänga alla filer oavsett om " det finns ändringar som inte har sparats

Trädvy Permalänk
Medlem
Plats
@ Datorn
Registrerad
Jul 2005
Citat:

Ursprungligen inskrivet av e5150

func! Toggle_number() if(&number==1) set nonumber else set number endif endfunc map <unique> b :call Toggle_number()<cr> " b för att så av/på numrering av rader " har även liknande för ignorecase/noignorecase

:set nu! "Togglar number :set ignorecase! "Togglar ignorecase

att lägga till ett ! på slutet för att "toggla" funkar med många andra set saker också.

Svorak | Xmonad | ZSH | Vim
Intel DX58SO2 | Core i7 920 | 5*2GB 1333MHz DDR3 | XFX HD5850 | Gigabyte HD5770 | CM V8 | CM Silent Pro M 700W | CM ATCS 840

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Nov 2004
Citat:

Ursprungligen inskrivet av sebbe1991

:set nu! "Togglar number :set ignorecase! "Togglar ignorecase

att lägga till ett ! på slutet för att "toggla" funkar med många andra set saker också.

Ah, nice! Jag tyckte att det kändes overkill med funktionerna, men orkade aldrig hitta någon bättre lösning när jag väl hade fått det att fungera. Tack iaf.

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Dec 2002

Sådär ja, då var man äntligen frisk igen och är tillbaka på jobbet.

Eftersom att jag för närvarande gör ett uppdrag på Ericsson arbetas det mycket med ClearCase så jag använder mig av ccase.vim för att förenkla hanteringen lite.
Ett annat skript som används flitigt är OMLet eftersom då jag håller O'Caml som favoritspråk och utvecklar mycket i det, OMLet ger en schysst indentering jämfört med den som följer med Vim (det är prat om att OMLet ska ersätta orginal-indenteringen så småningom).

Som färgtema för gVim använder jag Zenburn vilket jag finner mycket trevligt för ögonen under längre kodperioder i både ljust och mörkt rum.

Mina konfigurationsfiler:
.vimrc
.gvimrc

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2004

Bumpar denna tråd då jag tycker den innehåller många bra & nyttiga saker Kan bidra med ett tips för hur man lägger in sitt nerladdade färgtema i vim, då jag själv hade problem med det:

lägg .vim filen i mappen

~/.vim/colors

(om mapparna inte existerar så är det bara att skapa dom)
Lägg sedan till denna raden i .vimrc

colorscheme <namnet på din fil>

Trädvy Permalänk
Medlem
Plats
örebro
Registrerad
Aug 2005

Nice tråd!

Generella tips för att öka effektiviten/produktiviteten i vim är:

Använd en stor widescreenskärm och ställ den vertikalt!
Använd funktionella programmeringsspråk
Dissa Word när det finns LaTeX

(defmacro lisp-bootstrap (expr) expr)

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Dec 2002
Citat:

Ursprungligen inskrivet av tomasc
Nice tråd!

Generella tips för att öka effektiviten/produktiviteten i vim är:

Använd en stor widescreenskärm och ställ den vertikalt!
Använd funktionella programmeringsspråk
Dissa Word när det finns LaTeX

Nja, widescreen-skärmar på högkant blir lite för höga tycker jag.

Kör man widescreen har man däremot plats med två fina Vim-sessioner bredvid varandra om man kör en vettig fönsterhanterare (WMII/xmonad), annars kan man köra window splits i Vim (vilket också fungerar riktigt bra).

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2004

Vet någon om man kan få igång bash inuti Vim? Dvs, jag öppnar vim, skapar ett nytt fönster (^W osv) men istället för en textfil så kör jag en terminal i det del-fönstret.

Trädvy Permalänk
Medlem
Plats
/dev/null
Registrerad
Jun 2003

Movement: skulle du vilja dela med dig av din Terminal.app profil

Trädvy Permalänk
Hedersmedlem
Plats
Uppsala
Registrerad
Jul 2001
Citat:

Ursprungligen inskrivet av polygon5
Vet någon om man kan få igång bash inuti Vim? Dvs, jag öppnar vim, skapar ett nytt fönster (^W osv) men istället för en textfil så kör jag en terminal i det del-fönstret.

Det verkar krävas en patch. http://www.wana.at/vimshell/
(Google: vim shell window )

X370 Taichi / R7 1700 @ 3.75 GHz 1.2 V / 2x8 GB 3200 MHz CL16 / MSI GTX 1070 Gaming, OC / Samsung 960 EVO 500 GB / Corsair RM650x
LG G6 (H870)

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2004
Citat:

Ursprungligen inskrivet av Thomas
Det verkar krävas en patch. http://www.wana.at/vimshell/
(Google: vim shell window )

Ah, tackar. (Uppenbarligen suger jag på att söka smart i google ) Fick det dock inte att funka (måste man installera om vim från source?), men tack iaf

Trädvy Permalänk
Medlem
Plats
/dev/null
Registrerad
Jun 2003
Citat:

Ursprungligen inskrivet av polygon5
Ah, tackar. (Uppenbarligen suger jag på att söka smart i google ) Fick det dock inte att funka (måste man installera om vim från source?), men tack iaf

Yes, det finns väl intruktioner på siten eller någon README i guess.
Vim shell kan faktiskt vara rätt användbar men inte allt användbar att bara använda som terminal så det fattas stöd för ett par grejer.

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Dec 2002

Det går att köra ett shell i Vim, men inte i en split/tabb dessvärre:

:sh

Fungerar dock fint om man lite fort behöver ett shell temporärt.

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Trädvy Permalänk
Medlem
Plats
::1
Registrerad
Jul 2003

funkar fint med te.x

!ls

om man inte skall göra så mycket. Man kan ju dess utom köra

:r !ls

för att klistra in outputen från ett kommando (i detta fallet ls) i sin fil.

Trädvy Permalänk
Medlem
Plats
Borås
Registrerad
Mar 2005

Hittade denna sidan idag: http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/index.html
Trevligt om man letar efter ett färgtema.

Plan9 fan. In glenda we trust.

Trädvy Permalänk
Medlem
Registrerad
Aug 2005
Citat:

Ursprungligen inskrivet av m0REc
Sådär ja, då var man äntligen frisk igen och är tillbaka på jobbet.

Eftersom att jag för närvarande gör ett uppdrag på Ericsson arbetas det mycket med ClearCase så jag använder mig av ccase.vim för att förenkla hanteringen lite.
Ett annat skript som används flitigt är OMLet eftersom då jag håller O'Caml som favoritspråk och utvecklar mycket i det, OMLet ger en schysst indentering jämfört med den som följer med Vim (det är prat om att OMLet ska ersätta orginal-indenteringen så småningom).

Som färgtema för gVim använder jag Zenburn vilket jag finner mycket trevligt för ögonen under längre kodperioder i både ljust och mörkt rum.

Mina konfigurationsfiler:
.vimrc
.gvimrc

Hur fungerar ccase.vim med UCM (sitter också på Ericsson)?

Jag sitter med en 20"-are där en terminal tar upp hela skärmen (ingen fönsterdekoration) på varsin (4 totalt) desktops. Ofta har jag screen igång som delar skärmen i två delar. Jag har inte så mycket jox i min vimrc, det viktigaste är nog att man har ett färgtema som fungerar bra.

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Dec 2002

Det finns åtminstone stöd för att skapa och sätta aktiviteter, men har inte provat det då jag inte jobbat i någon UCM-miljö än.

EDIT:
Om vi ska styra in tråden lite smått på arbetssätt så jobbar jag ungefär så här:

Hemma
Hemma kör jag en tremonitor-setup med 17" TFT-skärmar (1280x1024). Vanligen har jag Vim uppe på mittenskärmen och blandar tabbar/splits för att täcka de filer jag arbetar med.
Ofta en tabb för varje .c-/.h-filskombination (vilka visas i varsin vertikal split, C-filerna till vänster) när jag jobbar i C, men inte nödvändigt.

På vänsterskärmen brukar jag testa/kompilera kod eller ha dokumentation, men ibland vill man ha lite mer kodyta och då får en Vimsession även täcka upp denna.

Till höger tenderar jag att ha IRC uppe, men ibland hamnar testning av kod eller rent av ren kod på denna skärm också.

Kör Linux med WMII som fönsterhanterare, 10 virtuella skrivbord per skärm.

Jobbet (förut)
På förra uppdraget arbetades det i Linux, även här körde jag WMII med 10 virtuella skrivbord.
Skärmen var en 20" med upplösningen 1600x1200 och jag kan säga att det kändes väldigt trångt när man är van vid att kunna breda ut sig över tre skärmar. Lyckades väl halvbra dock, men saknade jämt och ständigt minst en extra skärm.

I Vim används, precis som hemma, en kombination av tabbar och splits för att hålla koll på den relevanta biten kod jag arbetar på för närvarande.

Jobbet (nu)
Nu jobbar jag visserligen inte med programmering utan som TCM, men det blir ändå en del Vim (mycket saker som automatiseras och hjälpskript av olika slag som skrivs).

Miljön är Windows och jag trivs inte för fem öre. Skärmen är en 24" TFT med en upplösning på 1920x1200 och jag kan direkt säga att skärmen är på tok för stor. Använder även laptopen (14.1", 1280x800) som en sekundärskärm för e-mail.

"Tack vare" Windows extremt dåliga (enligt mig) fönsterhantering tvingas jag numera kompromissa en jävla massa och är långt ifrån lika produktiv som jag är i Linuxmiljö.

Vim används dock på samma sätt som alltid, tabbar och splits i gVim, antingen i fullskärm eller 50% av skärmen, vertikalt delat.
Kör även tredjepartsapplikationer för att få 10 stycken virtuella skrivbord, vilka verkligen behövs, både för Vim och annat.

Hm, nu blev det i och för sig inte så mycket om Vim här... Aja, det får stå.

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2004
Citat:

Ursprungligen inskrivet av m0REc

Hemma kör jag en tre monitor-setup med 17" TFT-skärmar (1280x1024). 10 virtuella skrivbord per skärm.

Jäklar alltså, på min macbook 13" har jag 4 virtuella "spaces", varav jag verkligen använder typ 3. Hade tyckt att det skulle bli väldigt svår-överskådligt med så många olika skrivbord.