큰 디렉토리 구조에서 여러 파일 간 vim 편집 / 전환


11

나는 결코 vim 고급 사용자가 아니며 vim으로 고급 동작과 명령을 파악하기 시작했습니다. 그러나 나는 돌아 다닐 수없는 단점이 있습니다.

코드 작성을위한 그래픽 프로그램으로 자랐지 만 최근에 ssh & screen을 통해 vim을 사용하여 많은 폴더가있는 상당히 큰 프로젝트에서 작업하기 시작했습니다.

vim 마스터가 여러 파일을 빠르고 쉽게 처리하기 위해하는 일이 궁금합니다. Rails 앱을 예로 들어 보겠습니다. 컨트롤러를 편집하여 실행한다고 가정 해보십시오.

vim app/controllers/controller.rb

그러나 뷰 또는 DB 마이그레이션 편집으로 신속하게 변경하고 싶습니다. 첫 번째 본능은. :wqbash로 돌아가 해당 디렉토리로 이동하고 새로운 버퍼에서 vim을 다시 시작합니다.

이것은 분명히 잘못되었습니다.

나는 여러 가지에 대해 배웠다.

  • 클라이언트 서버 (하지만 ssh를 통해 X를 사용하고 싶지 않으며 이것이 유일한 방법 인 것 같습니다)
  • :e탐색하여 다른 파일을 열 수는 있지만 매우 빨리 할 수는 없습니다. 탭 완성은 정말 저를 트립합니다.
  • 전체 디렉토리를 열고 버퍼를 검색합니다.
  • NERDTree는 유망하지만 실제로 그래픽 표현을 멀리하고 명령 줄 탐색을 마스터하도록 강요하고 싶습니다.

순진한 점에 대해 사과 드리지만, 주관적인 것이더라도 올바른 방법을 배우고 싶습니다.

당신의 방법은 무엇이며, 무엇을 추천 하시겠습니까?


특히 루비 온 레일즈를 들어, 팀 교황의 rails.vim 플러그인 (완료와 함께, 새로운 계층 구조로 확장) 약간의 좋은 명령이 모델 / 뷰 / 컨트롤러 / 마이그레이션 / 테스트를 위해 파일을 여는을 / ... (참조 rails-type-navigation문서 , 또는 :help rails-type-navigation때를 설치하십시오).
Chris Johnsen

답변:


7

종료하지 않고도 여러 파일을 편집하도록 vim을 설정할 수 있습니다. 여러 버퍼를 사용하고 이들 사이를 전환합니다. 화면에서 vim을 사용하고 있기 때문에 ~ / .vimrc에 다음을 넣어 사용할 수 있습니다.

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

이러한 키 매핑은 Ctrl- 왼쪽 및 오른쪽 화살표 키로 매핑되어 버퍼 간을 전환합니다. F4 키는 GUI가 표시하는 것과 동일한 메뉴를 호출합니다. 탭을 누르면 탭을 누를 때 완료를 선택할 수있는 작은 메뉴도 표시됩니다.


아주 좋은 팁,이 세 가지 답변은 정말 편안한 느낌을주었습니다. 플러그인이없는 훌륭한 버퍼 관리는 훌륭한 기술입니다. 와일드 메뉴를 좋아하십시오!
FEBS

5

하! 예전 에는 당신과 똑같 았기 때문에 어디에서 왔는지 정확히 알고 있습니다. 심지어 지금까지 내가하고있는 일을 어느 정도 알고 있습니다 (나는 vim 신이 아니지만 거기에 가고 싶습니다) 나는 여전히 : wq를하고 쉘로 돌아갑니다.

이것을 확인하십시오 -이것은 당신을 도울 수 있습니다. (이것에 대해 전혀 알지 못했기 때문에 나에게도 도움이 될 것입니다. 스택 교환 사이트의 장점은 다른 사람들이 배울 수 있도록 돕는 것입니다!)

여기 내가하는 일이 있습니다.

  1. :e명령. vim 내부에서 파일을 편집 할 때 같은 작업을 수행 할 수 :e dir/subdir/otherfile있으며 새 버퍼에서 파일을 열면 두 개의 파일이 한 번에 열립니다.

  2. Ctrl-Shift-6(실제 ASCII 값을 모릅니다). 두 개의 버퍼가 열려있는 경우이 토글을 사용하여 버퍼간에 플래시를 전환 할 수 있습니다.

  3. bd-버퍼 삭제. 버퍼를 지울 수 있습니다.

  4. 이것은 정말 정말 편리한 것 :sh입니다. 어떤 이유로 든 쉘로 돌아 가야하는 경우 (예를 들어, 디렉토리를보고 파일을 chmod) vim의 쉘 명령을 호출하면됩니다. 포탄을 나가면 vim에 있던 곳으로 바로 돌아갑니다.

  5. 위와 같은 카테고리에서-타이핑 :!과 유닉스 명령은 그 명령을 실행합니다. 로 시도하십시오 ls. (쉘 내장에서도 작동한다고 생각하지만 확실하지 않습니다.)

그것들은 내가 항상 사용하는 것들입니다. 이 또한의 :n다음에 대한, 그리고 :p두 개의 버퍼 (하지만, 나는 보통 이렇게하지) 번에서 정력에 열보다 더 가질 수 있기 때문에, 이전 파일.


그 팁에 감사합니다. 나는 또한 이것을 발견했다 : wincent.com/products/command-t . 나는 그것을 사용하기 시작했습니다. 유일한 단점은 루비 (ssh와 친숙하지 않음)가 필요하다는 것입니다.하지만 정확히 내가 찾던 것입니다. 그것과 함께 :sh, :e적절한 버퍼 관리, 사물 섹시 수는
FEBS

대부분의 쉘 (즉, 작업 제어 기능 이있는 쉘) Ctrl+Z에서는 프로세스를 일시 중단해야합니다 ( fg쉘에서 다시 표시하기 위해) :sh.
maxschlepzig

또 다른 좋은 팁! 우수한! 이것을 블로그 포스트 나 다른 것으로 컴파일해야합니다.
1


2

분할 창을 사용하여 한 번에 여러 파일을 보는 것이 좋습니다. VIM 내에서 Buffer and Window 관리 기능을 추가하면 곧 VIM 닌자가 될 것입니다.

실제 문서는 VIM Windows Documentation 을 참조 하지만 여기서 먼저 시작해 보겠습니다.

2 개 이상의 수평 분할 창으로 VIM을 시작하고, 상단 창에는 file1이 있고, 다음 창에는 file2가 있습니다.

vim -o <file1> <file2> (file3 file4 ...)

수직으로 분할 된 2 개 이상의 창으로 VIM을 시작하고, 가장 왼쪽 창에는 file1이 있고 다음 창에는 file2가 있습니다.

vim -O <file1> <file2> (file3 file4 ...)

커서를 다른 창으로 이동하십시오.

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

하나의 파일을 이미 편집했지만 창을 분할하고 다른 파일도 편집하려고합니다.

:split <file2>
:vsplit <file2>

수평 및 수직 분할 각각에 대해.

창을 이동하고 크기를 조정하는 등의 명령도 있습니다.


1

vi : split 명령을 사용하여 두 번째 편집 창을 엽니 다. split은 한 번에 두 개 이상의 수평 및 수직 분할을 수행 할 수 있습니다. 동일한 vi 세션에서 최대 10 개의 파일을 열었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.