2010-11-03 18 views
6

Używam vima (podstawowego, dzięki czemu mogę pracować na zwykłym terminalu ssh - nadal niewygodne z wersją Emacs non-gui), ale większość moich kolegów w organizacji używa emacs. Tak więc przy użyciu CVS napotykamy problemy niespójności wcięć (tabulatory stają się spacjami, liczbą zakładek/spacji, układem kodu itp.).Vim - wcięcie podobne do Emacsa

Czy istnieje sposób, w jaki mogę wykonać wcięcie VIM DOKŁADNIE jako EMACS. (podobny do domyślnego profilu emacs, którego używają moi koledzy).

(Co najważniejsze, chcę, aby schematy wcięć C++ i TCL vima pasowały do ​​schematów emacs).

pozdrowienia,

JP

+0

Zawsze możesz wypróbować tryb [emacs vim] (http: // www. emacswiki.org/emacs/VimMode) –

Odpowiedz

5

ja nie wiem, czy istnieje sposób, aby bezpośrednio zaimportować ustawienia wcięć Emacsa w vim, ale prawdopodobnie można skonfigurować takie samo zachowanie w vim samego:

set expandtab zamieni spacje
set autoindent będzie trzymać poziom wcięcia z poprzedniej linii
set shiftwidth=4 wpłynie bloku wcięcia z >> a < <
set softtabstop=4 ustawia długość zakładce miękkim w przestrzeniach
set tabstop=8 ustawia szerokość znaku tabulatora:

Zostało to odpowiednio wyjaśnione w vim wiki.

Kiedy trzeba filetype specyficzne wcięcia masz dwie opcje:

  1. zestaw autocmd zmienić wcięcia na pliku odczytu i tworzenia plików:
    au BufRead,BufNewFile *.py,*pyw,*.html,*.js set shiftwidth=4 ustawi shiftwidth dla plików * .py.
  2. Skonfiguruj wtyczkę typu pliku, utwórz skrypty name.vim w folderze .vim/ftplugin dla określonych typów plików i ustaw tam opisane zmienne. Jest to również opisane szczegółowo w vim wiki.
0

Oto jak ekstrakt z niektórymi opcjami dotyczącymi wcięcia od .vimrc:

set expandtab 
set tabstop=2 
set shiftwidth=2 
set autoindent 
set smartindent 

Wszystkie opcje są ładnie opisane w vim pomoc:

:help smartindent 
:help autoindent 

UPD: także dla C-podobnych Języki można rozważyć :help C-indenting

+0

Witam, Czy istnieje sposób, aby wiedzieć, jaka wartość tabstop/shiftwidth będzie naśladować emacs najbliżej bzh wymienia je jako 8,4, ale podejrzewam, że 2,2 są bardziej odpowiednie.Wszelkie wskaźniki? –

+0

@ JP19 Przepraszam, nigdy nie używał emacs, więc nie wiem nic o domyślnym wyglądzie :) – andr

1

Jeśli chodzi o wyspecjalizowane wcięcia dla języków C++ i TCL, istnieje kilka specjalnych informacji, które mają zastosowanie w aditonie do wszystkich innych sugerowanych ustawień. Vim ma specjalne reguły wcięcia zdefiniowane w kodzie dla różnych języków. Część z nich znajduje się w katalogu/indent instalacji vim, gdzie znajduje się oddzielny plik dla każdego typu pliku. Aby uzyskać więcej informacji o tym, jak to działa, przeczytaj pomoc dotyczącą "indentexpr".

Wcięcie wcięcia - i myślę, że wcięcie dla C++ - jest w większości zdefiniowane w kodzie źródłowym Vima i ma zilionowe opcje, które można ustawić, plus jest specjalnie konfigurowalne w c.vim lub C++. plik wcięcia. Przeczytaj pomoc dla "cindent" i "c-indenting", aby uzyskać dodatkową pomoc.

W skrócie, plik tcl.vim steruje wcięciem specjalnym plików tcl. Jeśli chcesz zmienić sposób wcięcia z tcl, powinieneś zmienić główną funkcję w tym pliku. Wcięcie c/C++ jest w dużej mierze kontrolowane przez wewnętrzne elementy Vima, ale z wieloma różnymi flagami opcji. Możesz kontrolować wcięcie c/C++, konfigurując opcje w taki sposób, w jaki chcesz i/lub wpisując funkcję dla pliku wcięcia w katalogu/indent. (Wydaje mi się, że nie ma pliku C++ w katalogu/indent, nie jestem pewien, czy plik c.vim jest plikiem do edycji, czy też trzeba utworzyć nowy plik vim v ++.Myślę, że jest to plik c.vim, który zostanie użyty. który jest w zasadzie pustą powłoką w standardowej instalacji Vima, ale możesz przeczytać inne pliki indentów * .vim, aby dowiedzieć się, jak działają.