3/23/2013

Vim tagbar

Tagbar pomaga wtedy gdy w module masz dużo kodu i jest ci trudno ogarnąć, co gdzie jest (np. po wcześniejszej osobie, która pisała kod).

Jeżeli korzystasz z pathogen to instalacja jak się domyślasz jest banalna:
cd ~/.vim/bundle
git clone https://github.com/majutsushi/tagbar.git
Dodatkowo musisz mieć w systemie Exuberant Ctags. Szybka instalacja pod Ubuntu:
sudo apt-get install ctags
W pliku .vimrc możesz jeszcze dodać:
nmap <F8> :TagbarToggle<CR>
Umożliwi ci to na szybki dostęp do Tagbar wciskając F8.

Tak to wygląda dla kodu pythona:
Tagbar vim
 Kilka przydatnych skrótów klawiszowych:
  • enter/double click - przenosi Cię do taga, na który wskazałeś kursorem (na screenie widać, że przeniosło mnie do metody route)
  • s - sortowanie tagów według kolejności występowania lub według nazwy (domyślnie jest według kolejności występowania)
  • p - przenosi do danego tagu, lecz kursor pozostaje w tagbarze
  • -/+ - zwija/rozwija tagi, np. importy czy klasy
  • =/* - zwija/rozwija wszystkie tagi
  • ctrl+n/ctrl+p - skakanie po top-level tagach (następny, poprzedni)
  • F8 ;)

3/09/2013

Vim i gitgutter

Kilka dni temu trafiłem na plugin vim-gitgutter i postanowiłem go wypróbować. W wielkim skrócie plugin odpowiada za pokazywanie w którym miejscu w pliku dokonałeś zmian, coś jak git diff.


Korzystam z pathogen, więc aby zainstalować plugin wklepałem:
cd ~/.vim/bundle
git clone git://github.com/airblade/vim-gitgutter.git
I już można się bawić. Posiedziałem nad nim chwilę i naprawdę mi się spodobał, lecz musiałem wprowadzić kilka swoich poprawek :)

Po pierwsze, wyłączyłem domyślne pokazywanie różnic, a zbindowałem sobie komendę GitGutterToggle pod <leader>gr. Dzięki temu jak chcę zobaczyć różnicę to wciskam ,gr (klawisz <leader> mam zbindowany pod ","), a jak chcę wyłączyć to wciskam znów to samo. Dodatkowo zbindowałem sobie komendy GitGutterNextHunk i GitGutterPrevHunk odpowiednio pod <leader>d oraz <leader>s. Mogę przez to w łatwy i szybki sposób poruszać się po pliku skacząc z jednej zmiany na drugą.

Tak to wygląda w pliku .vimrc:
let g:gitgutter_enabled = 0
nmap <leader>gr :GitGutterToggle<CR>
nmap <leader>s :GitGutterPrevHunk<CR>
nmap <leader>d :GitGutterNextHunk<CR>
Plugin oferuje jeszcze kilka innych ciekawych rozwiązań takich jak np. podświetlanie danej linii ze zmianami, ale mi osobiście to bardziej przeszkadza niż pomaga. Jak zawsze zapraszam do repo dotfiles. Jak masz coś fajnego, też się podziel :)

3/06/2013

Anki i volume

Ostatnio nie wiadomo z jakich przyczyn (najprawdopodobniej jakiś program nadpisał mi configa .mplayer/config) anki nagle zaczęło odtwarzać wszystkie pliki audio bardzo cicho. Anki do odtwarzania audio korzysta z mplayera, więc od razu było wiadomo gdzie muszę szukać przyczyny.

Pierwsze co znalazłem na ten temat w man mplayer to informacja o tym, aby pobawić się głośnością. Dodałem więc do configa linijkę:
af=volume=10:0
Dzięki temu, każdy plik otwierany przez mplayer był wzmocniony o 10dB. Warto pamiętać, że jest to skala logarytmiczna, jak podasz 100 to wcale nie będzie głośniejsze sto razy, tylko dziesięć miliardów. Zadziałało, ale gdy podaje się zbyt dużą głośność to filtr ją przycina, aby do karty muzycznej nie przesyłać danych spoza akceptowalnego zakresu, co dla nas objawia się tym, że dźwięk jest zniekształcony.

Zmniejszyłem więc do 5dB (i do mniejszych wartości), ale dalej to samo. Dźwięk w niektórych momentach zostaje zniekształcony i po jednym odtworzeniu pliku, drugi raz nie chce już się tego robić ;) Nie mogłem tego zaakceptować, więc szukam dalej. Odtworzyłem pierwszy lepszy plik audio za pomocą mplayer i okazało się, że korzysta on nie ze sterownika alsa, lecz z pulse i problem został rozwiązany.

W configu umieściłem więc informacje o tym z jakiego sterownika mplayer ma korzystać i wszystko wróciło do normy. Oczywiście nie musiałem już podbijać głośności o te kilka decybeli, więc z configu mam teraz tylko:
ao="alsa"