[해결] 기본 텍스트 편집기 변경

우분투에서는 기본 텍스트 편집기가 gedit이지요. 그런데 아무래도 vim 신봉자이다 보니 기본 텍스트 편집기를 모두 gvim으로 바꾸고 싶어졌습니다. 매번 파일 열 때마다 오른쪽클릭 해서 gvim 고르기도 짜증나구요. 그래서 gnome을 뒤적거렸지만 기본 텍스트 에디터를 변경하는 것을 찾을 수가 없네요. 어딘가에 mime type 별로 설정이 있을 것 같아서 gconf-editor에서 뒤져봤더니 없군요. 다행이

[code:3rva442s]find ~ -type f -exec grep gedit {} ; -print[/code:3rva442s] 같은 무식한 방법을 써 보니 .local/share/applications/mimeapps.list 라는 파일이 튀어나옵니다. 봤더니 내용이 이렇습니다.

[code:3rva442s]
[Added Associations]
text/plain=gvim.desktop;gedit.desktop;openoffice.org-writer.desktop;
text/x-readme=gvim.desktop;gedit.desktop;openoffice.org-writer.desktop;
[/code:3rva442s] (원래는 gvim이 제일 뒤에 있었는데 제일 앞으로 옮겼습니다.)
상당히 단출합니다. 다른 mime type별 프로그램은 /etc/mailcap을 참조하는 것 같은데, 그럼 사용자별로 설정되는 mime type 별 프로그램은 .local/share/applications/mimeapps.list에 덧대어서 추가되는 걸까요? 그런데 gnome을 통해서 이것을 설정하는 방법은 어디에 있을까요? windows에서 explorer 설정에 보면 mime type이나 확장자별로 프로그램을 정할 수 있지 않습니까? nautilus 설정 창에서는 못찾겠는데요.

[quote="Lbird":1j8k4ja3]그런데 gnome을 통해서 이것을 설정하는 방법은 어디에 있을까요? windows에서 explorer 설정에 보면 mime type이나 확장자별로 프로그램을 정할 수 있지 않습니까? nautilus 설정 창에서는 못찾겠는데요.[/quote:1j8k4ja3]
해당 파일을 오른쪽 클릭하신 후에
속성 -> 다른 프로그램으로 열기 보시면 있지 않나요?

전 mc (midnight-commander)에서 내장 에디터인 nano대신 vim설정하고 싶은데, 아직 방법을 잘 몰라 고민 중… ^^;

해결했습니다. 환경설정에서 내장 뷰어, 내장 에디터 사용 클릭해제하면, 뷰어가 vim으로 뜨지만, 여전히 에디터가 nano로 뜨더라구요. 다음 명령 내리면, f4해도 vim이 뜨네요.
export EDITOR=/usr/bin/vim

[quote="namhyung":10afkk6p][quote="Lbird":10afkk6p]그런데 gnome을 통해서 이것을 설정하는 방법은 어디에 있을까요? windows에서 explorer 설정에 보면 mime type이나 확장자별로 프로그램을 정할 수 있지 않습니까? nautilus 설정 창에서는 못찾겠는데요.[/quote:10afkk6p]
해당 파일을 오른쪽 클릭하신 후에
속성 -> 다른 프로그램으로 열기 보시면 있지 않나요?[/quote:10afkk6p]
아… 그런데 그건 확장자 단위로 설정하는 것이네요. 확장자가 없는 텍스트 파일(README 같은 것)은 문제죠. 일단은 걸리는 게 text/plain으로 mime이 잡히는 것들 뿐이라 mimeapps.list 수정하는 것으로 그냥 해결을 봤습니다.

[quote="cky":zud2pce7]
export EDITOR=/usr/bin/vim[/quote:zud2pce7]
음… 노틸러스는 저 환경 변수는 상관하지 않는 것 같아 보이네요.

[quote="namhyung":zud2pce7]
해당 파일을 오른쪽 클릭하신 후에
속성 -> 다른 프로그램으로 열기 보시면 있지 않나요?[/quote:zud2pce7]
여기서 선택하는 것이 우클릭 -> 다른 프로그램으로 열기와 다른 것이었군요. 착각했습니다. 그런데 이것도 여전히 확장자 단위로만 적용되는 것 같습니다. 확장자가 없는 파일은 같은 파일이름일 때만 적용되는군요.

좀더 찾아보았는데 nautilus-actions라는 패키지가 있더군요. 이걸 좀 만져주니 파일 이름 패턴이나 mime type에 따라서 실행되는 프로그램을 세세하게 조정할 수 있군요. 여기 포럼에는 이것에 대한 소개가 없는 것 같아서 간단히 적어보자면 이렇습니다:

[b:zud2pce7]설치[/b:zud2pce7]
간단합니다. [code:zud2pce7]apt-get install nautilus-actions[/code:zud2pce7] 라고 하시면 됩니다.

[b:zud2pce7]설정[/b:zud2pce7]
설정 프로그램을 메뉴에서 띄울 때는 메뉴->시스템->기본설정->노틸러스 동작 설정을 선택합니다. shell이나 실행 창에서 띄울 때는 [code:zud2pce7]nautilus-actions-config[/code:zud2pce7] 를 실행합니다.

[b:zud2pce7]첫화면[/b:zud2pce7]
첫화면에 뜨는 것은 설정되어 있는 action의 목록입니다. 새 action을 추가하려면 추가를 누르고 이미 있는 action을 편집하려면 편집을 누르고 등등… 딱 보이는 것대로입니다.
[attachment=4:zud2pce7]-노틸러스 동작.png[/attachment:zud2pce7]

[b:zud2pce7]동작 편집[/b:zud2pce7]
추가나 편집을 누르면 각 action의 세부 항목을 정할 수 있습니다. 각 항목에 마우스를 올려놓고 잠시 기다리면 툴팁이 뜹니다. 여기 그냥 옮겨 보자면:
레이블은 우클릭 했을 때 팝업(context menu)에 뜨는 이름입니다. (_알파벳)의 형식으로 단축키도 지정할 수 있습니다.
툴팁은 context menu에서 해당 action에 마우스를 올려 놓았을 때 노틸러스 상태창에 뜨는 설명입니다.
아이콘은 context menu에 action 이름 옆에 뜨는 아이콘입니다. (그런데 아무 파일이나 아이콘으로 지정할 수는 없는가봅니다. 잘 모르겠습니다.)

그 밑에 프로파일은 이 action 항목을 어떤 상황에서 표시할 것인가와 실제로 어떤 프로그램을 실행할 것인가를 설정하는 것입니다. 프로파일 하나가 하나의 "상황"이라고 보시면 됩니다. 위에서 설정하는 레이블은 얼굴마담일 뿐이지요 :stuck_out_tongue:
[attachment=3:zud2pce7]-"gvim으로 열기(_V)" 동작 편집.png[/attachment:zud2pce7]

[b:zud2pce7]프로파일 편집[/b:zud2pce7]
프로파일을 선택하고 편집하거나 새 프로파일을 추가하면 프로파일 편집 창이 뜹니다. 역시 각 항목에 마우스를 올려 놓으면 툴팁이 뜨는데, 역시 여기에 설명을 달자면:

동작 탭:
경로는 실제 실행될 프로그램의 path입니다. $PATH에 들어 있는 경로에 있는 프로그램이면 그 실행파일 이름만 적어도 됩니다.
매개변수는 프로그램에 argument를 어떻게 넘길 것인가인데 범례를 눌러보면 설명이 잘 나와 있습니다. 여러 파일을 열 수 있는 프로그램이라면 %M 정도를 주는 것이 적당하겠지요.

조건 탭:
여기서는 어떤 파일(또는 디렉토리)가 선택될 때 action을 context menu에 표시할 것인가를 정할 수 있습니다. 이름은 regular expression 같은 화려한 것은 아니고 ^^ 간단히 wildcard *와 ?를 이용해서 패턴을 정할 수 있습니다. MIME은 말 그대로 어떤 MIME 형식에 대해서 표시할 것인가인데 저 같은 경우 mime이 text/*로 되지 않더라도 실제로는 text인 것들을 vim으로 보려고 */*를 선택했습니다. 어떤 파일이든지 "무조건 gvim으로 열기"가 됩니다.

그 밖에 다른 것들은 그냥 보시면 압니다. (무책임 -.-:wink:
[attachment=2:zud2pce7]-"main" 프로파일 편집.png[/attachment:zud2pce7]
[attachment=1:zud2pce7]-"main" 프로파일 편집-1.png[/attachment:zud2pce7]

[b:zud2pce7]활용예[/b:zud2pce7]
예를 들어 index.theme이라는 파일이 있다면 이 파일은 순수한 text임에도 불구하고 MIME은 application/x-theme으로 감지됩니다. text/*이 아니기 때문에 그냥 우클릭해도 원래는 gvim이 context menu에 안 나옵니다. 위에서 action을 추가해서 무조건 gvim으로 열기를 추가해서 아래쪽에 항목이 하나 나옵니다.
[attachment=0:zud2pce7]-Grounation - 파일 찾아보기.png[/attachment:zud2pce7]

뭐… 좀 설명이 주절주절하지만, 실제로 뭔가 추가하게 되면 그리 오래 걸리지는 않는군요.

뭔가 더 알아낸 것이 있어서 update합니다.

gnome이 각 프로그램 별 기본 프로그램과 후보 프로그램을 결정하는 메커니즘은 대강 다음의 과정을 따르는 것 같습니다. (텍스트 에디터뿐 아니라 모두)

  1. 우선 /etc/gnome/default.list을 찾아봅니다. 거기에 해당 MIME 타입에 기술된 프로그램 목록을 읽습니다.
  2. 그 다음 ~/.local/share/applications/mimeapps.list를 찾아봅니다. 여기에 있는 설정이 /etc/gnome/default.list보다 우선합니다.
  3. (이건 추측입니다)그래도 해당 안되는 것은, MIME이 text/* 일 때 /usr/bin/gnome-text-editor를 실행합니다. (/usr/bin/editor도 있는데 이건 터미널에서 실행할 때 해당됩니다.)

nautilus 같은 곳에서 해당 파일의 기본 프로그램을 변경하면 /etc 밑에 있는 default.list 내용과 다른 항목들을 mimeapps.list에 추가하게 됩니다.

~/.local/share/applications/default.list 라는 파일을 이용할 수도 있는듯한데 (http://tips.webdesign10.com/how-to-chan … h-nautilus) 실험을 해 보면 이 파일은 영향을 안 미치는 것 같습니다. mimeapps.list를 이용해야 합니다.

위 링크한 글에 딸린 댓글들 중에 보면 update-alternatives 라는 프로그램을 이용하는 방법도 나옵니다. 이 방법은 /usr/bin/editor와 /usr/bin/gnome-text-editor가 어떤 프로그램을 실행하게 할 것인지를 설정합니다.

[quote:g08v2ndo]
sudo update-alternatives --config editor
sudo update-alternatives --config gnome-text-editor
[/quote:g08v2ndo]
(실제로는 /etc/alternatives/ 아래에 있는 editor와 gnome-text-editor의 symbolic link를 변경해줍니다. 기본은 gedit으로 돼 있습니다.)

[b:g08v2ndo]결론[/b:g08v2ndo]
gnome-text-editor보다 우선하는 것인 default.list와 mimeapps.list이니 default.list에서 gedit이 있는 항목을 모두 mimeapps.list로 copy하고 gedit보다 앞에 gvim을 넣어줍니다. mimeapps.list를 변경하면 nautilus를 다시 시작하지 않아도 바로바로 적용됩니다.

이런 식입니다.

[code:g08v2ndo]
[Added Associations]
application/x-perl=gvim.desktop;gedit.desktop
text/plain=gvim.desktop;gedit.desktop;openoffice.org-writer.desktop;
text/x-chdr=gvim.desktop;gedit.desktop
text/x-csrc=gvim.desktop;gedit.desktop
text/x-dtd=gvim.desktop;gedit.desktop
text/x-java=gvim.desktop;gedit.desktop
text/mathml=gvim.desktop;gedit.desktop
text/x-python=gvim.desktop;gedit.desktop
text/x-sql=gvim.desktop;gedit.desktop
[/code:g08v2ndo]