문제

현재 나의 워크플로 Emacs 때 나는 코딩에서는 C 또는 C++를 포함한 세 windows.에서 가장 큰 바로 포함되어 파일이 있습니다.왼쪽 두 개로 분할,아래되는 쉘 이는 내가 사용 유형에서 컴파일하는 명령하고,최고가 종종 어떤 종류의 문서 또는 README 파일 내가 원하는 상담을 하는 동안 나는 작업이다.지금 내가 알고있는 몇 가지 꽤 전문가 Emacs 이용자들이 사용하는 언어입니다,나는 호기심이 무엇인지 다른 Emacs 기능적으로 유용하는 경우에도 사용으로 완료됩니다.특히,대부분의 Ide 일반적으로 이행하는 이러한 기능은 어떤 형태 또는 다른:

  • 소스코드 편집기
  • 컴파일러
  • 디버깅
  • 문서를 조회
  • 버전은 제어
  • OO 기능과 같은 클래스를 조회하고 객체 관리자

에 대한 몇 가지의 이러한,그것은 분명하는 방법 Emacs 갈 수 있는 이러한 기능을 하지만,나머지는 어떨까요?또한,특정 언어 초점을 맞춰야 하에,나는 그것을 말해야 합 C++.

편집: 는 한 사용자는 지적 내가 했어야 더 보시려라고 말할 때 내가 무엇인지에 대해'the rest'.대부분 내가에 대한 호기심이었 효율적인 버전 제어,문서뿐만 아니라 조회입니다.예를 들어,액은 매우 쉽고 빠른 hyperspec 조회에서는 Lisp 기능입니다.이 있는 빠른 방법을 볼 무언가에서는 C++STL 문서(잊어버렸을 경우에는 정확한 구문의 해시 맵, 예를 들어)?

도움이 되었습니까?

해결책

당신은 특정으로 당신이 무엇을 의미로"나머지".제외한 개체에 대한 검사(는"m 을 알고),이맥스는 위의 모든를 아주 쉽게:

  • 편집자(명)
  • 컴파일러-실행 M-x compile 입력하신의 컴파일 명령입니다.거기에서,당신은 단지 M-x compile 고 기본값을 사용합니다.Emacs 을 캡처 C/C++컴파일러는 오류를(가장 잘 작동 GCC)및 탐색하는 데 도움이하는 라인으로는 경고 또는 오류가 있습니다.
  • 디버깅-마찬가지로,당신이 원하는 디버깅,유형 M-x gdb 고 그것을 만들 것입 gdb 버퍼으로 특별한 바인딩
  • 문서 검색-emacs 는 우수한 CScope 바인딩을 위한 코드 네비게이션.에 대한 다른 문서는:이맥스는 또한 맨페이지에서 확인하십시오 판독기에 대한 다른 모든 것,거기에는 웹과 책입니다.
  • version control-의 많은 이 바인딩을 위한 다양한 벤처 캐피탈드(CVS,SCC,RCS,SVN,GIT 모든 마음에 와서)

편집:나는 깨닫는 나의 답변에 대한 문서 조회가 정말과 관련된 코드 네비게이션.여기에 몇 가지 더하는-포인트 정보:

Google 검색이 없는지 의심을 공개한 예입니다.

두 번째로 링크를 표시,보고까지 기능(그리고 무엇이든)에서 다른 문서 수행 할 수 있습니다,심하지 않을 경우 지원합니다.

다른 팁

가 추천 이맥스 코드는 브라우저 으로"전통적인"IDE 스타일의 환경에 대한 emacs.

편집:나도 지금이 추천 Magit 높은 표준을 통해 벤처 캐피탈 인터페이스에서 emacs.

대신 실행하는 명령 쉘에서 창을 시도했 M-x compile?그것을 실행하는 명령,표시 오류,그리고 많은 경우에 매우 쉽게 이동하는 라인의 코드는 오류가 발생한 경우 출력 포함한 파일명과 줄번호.

만약 당신의 팬 Ide 할 수도 있습을 보 emacs'스피드 바 패키지(M-x 스피드 바).과하지 않은 경우,이미 이에 대해 배우고,사용하는 방법 태그 테이블 탐색 할 당신의 코드입니다.

거기 모서리의 이맥스는 한 번 발견하면 더 생산적인 방법으로 당신이 생각하지 않습니다.으로 다른 사용하여,태그는 환상적이고 빠른 방법 확대 주위의 소스 코드를 사용하여 M-/(dabbrev 확장)을 자주가 정확히 무엇을 기대를 완료하면 변수 이름입니다.

를 사용하여 발생하는 데 유용합니다.버퍼으로 모든 존재의 정규 표현식에서 버퍼입니다.정말 편리한 경우 refactoring 코드고에 대한 조각의 코드를 사용하거나의 변수,또는 당신이 사용하는 경우 TODO 마커이 소스 파일에서 당신은 그들 모두를 방문.

세척 라인,정렬 숫자 필드를 교체-regexp 과 사각형 기능을 할 수 있습니다 정말 유용치에서 몇 가지 도구와 그것을 변환하는 데 유용 데이터와 같은 elisp 프로그램 또는 쉼표로 구분된 스프레드시트에서도 합니다.

썼는지에 대해 IDE 같은 일을 할 수 있는 emacs

http://justinsboringpage.blogspot.com/2007/09/11-visual-studio-tricks-in-emacs.html

학습 elisp 는 또 다른 좋은 방법이 자신에 대한 답변을 다른 무엇 emacs 할 수 있는 것을 뛰어 넘 IDE 할 수 있습니다.

예를 들어 나는 블로그에 글을 쓰기에 대한 억지로 도우미 기능을 비난(쓰기에 자신의 의미할 수 있게 행동하는 당신이 원하는 방식으로 정확하게)...

http://justinsboringpage.blogspot.com/2009/01/who-changed-line-your-working-on-last.html

나 또한 작성하는 코드를 동적으로 만듭니다 코멘트 함수에 대한 시점에서,일치하는 코딩 표준과 작업에 어떤 영향을 주었을까요.

내 elisp 코드가 특히 위대한,그리고 그것의 대부분에 이미 존재하는 라이브러리는,그러나 그것은 정말 유용한을 만들 수 있 emacs 지 사용자 정의 재료는 제안합니다.

을 찾을 수 있습에 대한 자세한 설명 emacs&버전 통합 제어 내 사이트.또한 저는 작업에 대한 문서를 사용하여 Emacs 으로 개발 환경을 위해 많은 언어-C/C++,Java,Perl,Lisp/Scheme,Erlang,etc....

버전 관리를 위해,몇 가지가 있는 사용할 수 있습 버전에 따라 제어 시스템입니다.그러나 일부 기능은 일반적인 수 있습니다.

vc.엘 입하는 방법이 내장되어 버전 처리 제어에 파일을 수준입니다.그것은드 대부분의 버전 관리 시스템입니다.예를 들어,파괴 백엔드와 함께 제공 Emacs,고 있 git 드 및 다른 사람에서 사용할 수 있습니다.

가장 유용한 명령입니다 C-x v v (vc-는 다음 활동)는 적절한 다음 작업에 대한 파일에 당신이 방문하고 있습니다.이 의미할 수 있습 업데이트 저장소에서나 커밋의 변경,vc.el 도 다시 바인딩 C-x C-q 인 파일을 사용하는 경우에는 시스템을 필요로 하는 그것을(RCS).

다른 명령은 매우 유용 C-x v lC-x v= 을 보여주는 로그와 현재의 차이에 대한 파일을 사용하고 있습니다.

하지만 실제 생산성,사용을 피해야 한다는 단일 파일 vc.el 이외의 다른 명령에 대한 간단한 일이다.여러 가지가 있는 패키지 할 수 있는지에 대한 개요를 제공한 상태의 전체 나무,그리고 당신에게 더 많은 힘,그리고 언급하지 않는 기능을 만드는 일관된 커밋에 걸쳐 여러 파일이 있습니다.

이러한 대부분의 영향을 크게 받는 기반으로 원 pcl-cvs/pcvs 에 대한 CVS.거기다 심지어 그들의 두 함께 제공되는 파괴, psvn.엘dsvn.엘.패키지가있다 등입니다.

괜찮아,모두가 여기에 완벽한 힌트를 emacs 대 IDE 입니다.

하지만 사람을 염두에 두어야 하는 경우 사용자 정의 이맥스의 많은 확장자를(특히 사람과 함께 유형에 대해 검사에서 비행,함수 정의를 조회 등)emacs 을 로드하는 매우,매우 느려한 편집기입니다.

를 해결 방법이,내가 사용하는 것이 좋습니다 것에 emacs server mode.

그것은 매우 간단하다,사용할 필요가 없을 정 init 파일입니다.당신은 시작 이맥스에서 daemon mode;

emacs --daemon

이것이 만들어 이맥스 서버에 연결할 수 있습 중 하나에서는 터미널에서 또는 gui.나는 또한 일부를 만드는 별칭을 쉽게 확인하기 위해 호출합니다.

alias ec="emacsclient -t"
alias ecc="emacsclient -c &"
# some people also prefer this but no need to fight here;
alias vi="emacsclient -t"

이 방법,emacs 것 불도보다 더 빨리 gedit,약속한다.

은 가능한 한 가지 문제가 여기에 실행하는 경우,emacs 데몬에서 당신의 캐주얼의 사용자,당신은 아마를 연결할 수 없 emacs 서버 root.

그래서 필요하신 경우는 파일을 열고 있는 루트 액세스;사 tramp 대신 합니다.만 실행하는 이맥스 클라이언트와의 정상적인 사용자는 파일을 열고 다음과 같이

C-x C-f
/sudo:root@localhost/some/file/that/has/root/access/permissions
# on some linux distro it might be `/su:root@...` 

이로 만든 내 인생을 더 쉽게,내가 열 수 있습니다 내 무거운 주문을 받아서 만들어진 python IDE 밀리초 단위로 이 방법입니다.할 수도 있습니다 추가 emacs--데몬을 시작을 만들거나 파일에 대한 emacsclient.그게 당신입니다.

에 더 emacs 데몬 및 이맥스 클라이언트에 발견될 수 있는 위키;

http://www.emacswiki.org/emacs/EmacsAsDaemon

http://www.emacswiki.org/emacs/EmacsClient

는 것에 동의에 대해 알아보십시오 M-x 컴파일(바인딩하는 것 그리고 M-x next-는 오류를 짧은 키 시퀀스).

에 대해 배우는 바인딩을 위한 버전 관리(예:vc-diff,vc-다음의 조치,etc.)

모습으로 등록합니다.일 수 있을 뿐 아니라 기억에 위치 버퍼는 그러나 전체 창 구성(C-x w r--창-구성하는 등).

시작점(할 수 있는 명백하지 않)탐험을위한 벤처의 특징은 Emacs M-x vc-는 다음 활동.

그것은"논리적으로 다음 버전 관리"작업에서 현재 파일에 따라 상태의 파일을 VC 수 있습니다.그래서 파일이 아닌 경우 버전에서 통제,등록하는 경우에,그것은 파일이 변경되었고,변경 내용을 제출하 etc.

그것은 작은 익숙해지만,나는 그것에 매우 유용합니다.

기본값은 해제 C-x v v

TFS.el 에 대한 이맥스의 통합으로 Microsoft TFS.그것은 어떤 TFS 포함하여,실행하는 TFS Codeplex.com.

기본적인 단계를 설정:

  1. 소 tfs.el 에서 당신의 짐 경로입니다.

  2. 에.emacs file:

    (require 'tfs)
    (setq tfs/tf-exe  "c:\\vs2008\\common7\\ide\\tf.exe")
    (setq tfs/login "/login:domain\\userid,password")
          -or-
    (setq tfs/login (getenv "TFSLOGIN"))  ;; if you have this set
    
  3. 또한다.emacs 파일 설정은 로컬 또는 글로벌 핵심에 대한 바인딩 tfs 명령입니다.그래서 다음과 같:

    (global-set-key  "\C-xvo" 'tfs/checkout)
    (global-set-key  "\C-xvi" 'tfs/checkin)
    (global-set-key  "\C-xvp" 'tfs/properties)
    (global-set-key  "\C-xvr" 'tfs/rename)
    (global-set-key  "\C-xvg" 'tfs/get)
    (global-set-key  "\C-xvh" 'tfs/history)
    (global-set-key  "\C-xvu" 'tfs/undo)
    (global-set-key  "\C-xvd" 'tfs/diff)
    (global-set-key  "\C-xv-" 'tfs/delete)
    (global-set-key  "\C-xv+" 'tfs/add)
    (global-set-key  "\C-xvs" 'tfs/status)
    (global-set-key  "\C-xva" 'tfs/annotate)
    (global-set-key  "\C-xvw" 'tfs/workitem)
    

컴파일하고,오류,그 이전에 오류가 모두 매우 중요한 명령을 위한 C++개발에 이맥스(에 좋은 작품 grep 출력도).Etags,방문-태블,을 찾아-태그뿐만 아니라 중요합니다.완료.el 의 알려지지 않은 해킹의 20 세기,그리고 가속화할 수 있습 C++해킹에 의해 크기의 순서.아,그리고 잊지 말자 ediff.

나는 아직 사용하는 방법을 배우 버전에 제어를 방문하지 않고 쉘지만,이제는 내가 실행하는 커밋 그래서 더 많은 자주(git)나는 것입니다.

수도 있습니다 tabbar 유용합니다.그것은 에뮬레이트에만 동작을 못에서 이동할 때 이클립스를 Emacs.밖에 없","및"."으로 이동하기 위한 이전과 다음 탭 바,그것은 재현서 버퍼 Ctrl-x b 니다.

불행하게도,언급 웹 페이지 제공하지 않습니다 올바른 버전을 다운로드합니다.대부분의 우분투 버전은,그러나,그것을 전달에서 자신의 emacs-goodies 패키지가 있습니다.

내가 사용하는 이맥스 응용 프로그램을 시작합니다.이 모듈을 컴파일 좋은,하지만 내가 원하는 컴파일하여 더 똑똑하게 컴파일 명령어 라인 제안합니다. 그것은 사용 가능한"파일 변수"로 지정 compile-command, 하지만 난 뭔가를 조금 더 똑똑합니다.그래서 내가 쓴 작은 기능을 돕고 있습니다.그것은 추측을 컴파일 명령을 사용하는 사용자 프롬프트와 함께,실행하는 경우 compile.

추측 기능을 찾 vbproj 또는 csproj 또는 sln 파일을 발견하는 경우,그것은 스위치를 참조하십시오그 다음은 보이는 버퍼에서 파일 이름,그리고 그에 따라,제안하는 것이 다릅니다.니다.다 파일을 의미합니 WIX 프로젝트,그리고 당신은 가능성을 건축하고 싶 MSI,그래서 추측이 로직 제안 nmake 명령에 대한 MSI.면 Javascript 모듈,다음의 제안은 실행 jslint-for-wsh.js 을 보풀이다.js 파일입니다.으로 대체,제 nmake.

코드가 사용하여 다음과 같습니다:

(defun cheeso-guess-compile-command ()
  "set `compile-command' intelligently depending on the
current buffer, or the contents of the current directory."
  (interactive)
  (set (make-local-variable 'compile-command)
       (cond
        ((or (file-expand-wildcards "*.csproj" t)
             (file-expand-wildcards "*.vcproj" t)
             (file-expand-wildcards "*.vbproj" t)
             (file-expand-wildcards "*.shfbproj" t)
             (file-expand-wildcards "*.sln" t))
         "msbuild ")

        ;; sometimes, not sure why, the buffer-file-name is
        ;; not set.  Can use it only if set.
        (buffer-file-name
         (let ((filename (file-name-nondirectory buffer-file-name)))
           (cond

            ;; editing a .wxs (WIX Soluition) file
            ((string-equal (substring buffer-file-name -4) ".wxs")
             (concat "nmake "
                     ;; (substring buffer-file-name 0 -4) ;; includes full path
                     (file-name-sans-extension filename)
                     ".msi" ))

            ;; a javascript file - run jslint
            ((string-equal (substring buffer-file-name -3) ".js")
             (concat (getenv "windir")
                     "\\system32\\cscript.exe c:\\users\\cheeso\\bin\\jslint-for-wsh.js "
                     filename))

            ;; something else - do a typical .exe build
            (t
             (concat "nmake "
                     (file-name-sans-extension filename)
                     ".exe")))))
        (t
         "nmake "))))


(defun cheeso-invoke-compile-interactively ()
  "fn to wrap the `compile' function.  This simply
checks to see if `compile-command' has been previously set, and
if not, invokes `cheeso-guess-compile-command' to set the value.
Then it invokes the `compile' function, interactively."
  (interactive)
  (cond
   ((not (boundp 'cheeso-local-compile-command-has-been-set))
    (cheeso-guess-compile-command)
    (set (make-local-variable 'cheeso-local-compile-command-has-been-set) t)))
  ;; local compile command has now been set
  (call-interactively 'compile))

;; in lieu of binding to `compile', bind to my monkeypatched function
(global-set-key "\C-x\C-e"  'cheeso-invoke-compile-interactively)

나 때문에 이것을 하기 전에""조언을 컴파일을 위해 기능을 하지만 얻을 수 없을 만족.그래서 저는 정의된 새로운 기능과 이와 동일한 키스트로크 조합을 사용에 대한 compile.


편집 지금"똑똑한 컴파일.엘"어떤 이는 아이디어 하나는 여기서 한 발 더 나아갑니다.

에서 문서 검색:에 따라 프로그래밍 언어(들).

C 라이브러리와 시스템 호출은 일반적으로 문서화하에서 남자 페이지입니다.에 대한 사용할 수 있는 M-x man.어떤 것들을 설명 할 수있는 더 나은 정보 페이지사 M-x info.

에 대한 elisp 자체,사용 C-h f.파이썬,사용 >>> help(<function, class, module>) 에서 통역입니다.

내가 찾는 대부분의 다른 언어로 제공 문서는 html 형태입니다.한 것도 포함된 브라우저(사용 w3m).정 BROWSER 환경변수를 래퍼 스크립트 주변 emacsclient -e "(w3m-goto-url-new-session \"$@\")" (에서 기존 유닉스용),무언가가 브라우저를 열고 당신이 원하는 그것을 열어 내부 emacs.

내가 이것을 알고 있는 것은 아주 오래 된다.하지만 이 질문에 대해 유효한 이맥스는 초보자.

IMO 가장 좋은 방법을 사용하 emacs 로 ide 을 사용하는 것입 language 서버 프로토콜 와 emacs.을 찾을 수 있습에 대한 모든 정보는 언어로 서버에 연결된 웹 사이트입니다.

에 대한 빠른 설치,나는 당신을 촉구하이 페이지로 이동 eglot .IMO eglot 않습니다.통합 잘 자동으로 완료 패키지는 다음과 같 회사입니다.제공 찾을 참조,그리고 더 많은.

도에 대한 디버거,필요할 수 있는 특정 디버거를 위한 특정 언어입니다.당신이 사용할 수 있는 gdb 내에서 emacs.그냥 유형 M-x gdb .

에 대한 코드를 컴파일,그것은 최고 사용하는 쉘이 명령입니다.나는 이 프로젝트 eproj.그것기 같은 소녀 내 사랑 이 밤을 오직하는 동안을 완료합니다.하지만 모두가 지도 쉘이 명령하는 프로젝트 유형입니다.고 당신을 구축 프로젝트를 통해 쉘입니다.그것은 동일한 명령을 실행합니다.내가 도움이 필요할 수 있습니다 이것을 완료 프로젝트입니다.그것은 준비 사용을 위한,그러나 당신이 알고 있는 경우의 비트 elisp 을 통해 갈 수 있습니다.

는 제외하고,항상 사용하기 위해 최선을 다 emacs 컴파일 명령입니다.

버전 관리를 위해,나는 보지 못했던 것들이 다른 패키지 할 수 있는 일치의 힘 magit.그것은 특정한 사용할 수 있습니다..또한 git 다른 패키지 git-타임머신,내가 찾은 매우 유용합니다.

체 조회 및 등 조회가에 의해 제공되는 언어는 서버 프로토콜입니다.

프로젝트 트리에 사용할 수 있습 ide 같은 인터페이스 treemacs.

또한 프로젝트의 상호 작용 라이브러리 .

를 자동 완성,내가 찾기 회사 모드 매우 유용합니다.

진정으로 이맥스를 만들 수 있습니다.

최근 몇 년 동안,그 소리의 중요한 부분이되었다 Emacs C++지원합니다.Atila 네베스 이야기를 나누었는데에 CppCon2015:"Emacs 로 C++IDE"

그것은 16 분의 이야기,그가 어디에 보여줍 솔루션을 위해 다음과 같은 항목:

  • 점프하여 정의
  • 자동 완성
  • On-the-fly 구문 강조
  • 위 파일에서 프로젝트

슬라이드 발견될 수 있는 .

에서 유닉스 또는 X 윈도우고 있다는 것을 알고 있고 통합 IDE 를 위해 일하는 모든 것입니다.

에 대한 상호 작용으로 디버거 하나의 구성 요소의 IDE,고려 realgud.다른 것은 그것이 내가 찾은 파서에 대한 위치는 메시지도록 있는 경우 호출 스택 추적하고 편집하려는 특정 장소에서 호출 스택,이 프런트 엔드 인터페이스 할 수 있습니다.

이 프로그램이 사용할 수 있는 개선합니다.하지만 그것도 사용할 수 있는 사람들이 그것에 노력하고 있습니다.

면책 조항:나는 작업에 realgud

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top