Thay đổi trình chỉnh sửa mặc định khi sudo visudo


23

Khi làm sudo visudo, trình soạn thảo mặc định là nano.
Tôi muốn thay đổi nó thành vihoặc vim.

Tôi đã tạo vimtrình soạn thảo mặc định và sử dụng nó để thay thế cho geditviệc mở các tệp php, .txt, .c và .h, bằng cách đặt một vim.desktoptệp vào ~/.local/share/applications/và chỉnh sửa chính xác ~/.local/share/applications/mimeapps.listhoặc /etc/gnome/defaults.list. Tuy nhiên rõ ràng điều này không áp dụng cho nano.

Có manh mối nào không?


Bạn đã kiểm tra man visudochưa?
fkraiem

Tôi đã tìm ra thêm một số điều kể từ khi tôi viết nó - tôi hy vọng sẽ bổ sung thêm sau này; Các bản phân phối Linux xử lý nó khác nhau.
Volker Siegel

Có và tôi đặt VISUAL env-var của mình thành vim và "xuất" trong .bashrc và .bash_profile và sau đó lấy nguồn gốc nhưng không có kết quả. Ngay cả đăng xuất và đăng nhập lại trong phiên để đảm bảo.
Cbhihe

2
Tôi đã thêm vào sudo -E visudosau trong câu trả lời, bạn đã thử chưa? -E làm cho sudokhông loại bỏ tất cả các lọ env. Điều đó đúng bởi vì Ubuntu có một dòng Defaults env_resettrong/etc/sudoers
Volker Siegel

Ngoài ra, bạn đã thử update-alternativestôi cũng thêm?
Volker Siegel

Câu trả lời:


19

Vấn đề không phải là nó không áp dụng cho nanonó, mà là nó không áp dụng cho shell:

Chỉ cần đặt VISUALbiến môi trường:

export VISUAL=vim

Thêm cái này nữa ~ / .bashrc để làm cho nó vĩnh viễn.

Khi bạn dường như sử dụng vim nói chung, hãy đặt cả hai VISUALEDITOR:

export VISUAL="vim"
export EDITOR="$VISUAL"

hoặc đúng hơn POSIX

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR

Tôi giả sử nanolà giá trị của một hoặc cả hai biến.

Để sử dụng trình soạn thảo trong visudo thực sự, chúng ta cần xử lý việc sudokhông giữ các biến môi trường theo cách thông thường. Các tùy chọn -Ethay đổi đó.

sudo -E visudo

Nếu không có -Eở đây, bạn sẽ kết thúc với mặc định nanomột lần nữa


Hai biến được sử dụng từ lâu trước khi các tệp có tên *.desktophoặc mime*thậm chí tồn tại.
(Và điều ấn tượng là: chúng thực sự được sử dụng như một tiêu chuẩn chung .)
Trong Ubuntu, mặc định hệ thống dường như được đặt với sudo update-alternatives --config editor. Nó hiển thị một menu để thay đổi hiệp hội hiện tại.


Xem phần ENVIRONMENTtrong man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set

1
Bạn đã thử à? Theo mặc định, sudobỏ đặt hầu hết các biến môi trường từ môi trường cho lệnh mà nó chạy. VISUAL=vim sudo visudo(và các biến thể bạn đề xuất) không hoạt động đối với tôi và không nên làm việc. sudo VISUAL=vim visudokhông hoạt động, mặc dù. (Tôi đã thử cả hai lần nữa, để chắc chắn.) Nhân tiện, VISUALEDITORkhông được đặt mặc định, không được đặt thành nano. VISUALEDITORkhông phải là cơ chế thông qua đó visudochọn nanotrong cấu hình mặc định (ngoại trừ khi nó liên quan đến chúng, thấy chúng không được đặt hoặc để trống và tiếp tục).
Eliah Kagan

3
Nó hoạt động với sudo -E visudo- điều chắc chắn sẽ có trong câu trả lời, đúng.
Volker Siegel

+1 và tôi chấp nhận câu trả lời xuất sắc của bạn, Volker. "Dank Dank!" Tôi vẫn nhận được thông báo lỗi với cờ -E, về việc không được phép chuyển các biến môi trường, nhưng sau đó tôi đã kiện từ một người dùng truy cập bị hạn chế sang một người có đặc quyền quản trị và chơi lô tô! Tất cả đều hoạt động tốt.
Cbhihe

Ồ, tôi rất vui khi thêm một điều có thể sai / có thể giúp đỡ;) Bạn có thể kiểm tra các tùy chọn (dòng với Default) trong / etc / sudoers của bạn không? Tôi nghĩ có một tùy chọn cấm điều đó, nhưng không có trong tập tin mặc định của tôi.
Volker Siegel

@VolkerSiegel: Tôi tưởng tượng rằng bạn đề cập đến mặc định env_reset trong / etc / sudoers . Nó được thiết lập chỉ trong trường hợp của tôi.
Cbhihe

8

Như được mô tả trong câu trả lời này , thêm

Defaults editor=/path/to/editor

vào tập tin sudoers .

Lưu ý: điều này sẽ chỉ hoạt động nếu tệp đang được chỉnh sửa chứa Defaults editor=/path/to/editordòng hoặc bao gồm một tệp có chứa nó.

Ví dụ: visudo -f /etc/sudoers.d/my_sudoers_extensionsẽ mặc định là Nano.


2
+1: Tốt, và tôi đã không nhận thấy nó khi lần đầu tiên tôi bắt đầu chủ đề này, cảm ơn.
Cbhihe

3

Nếu bạn không bao giờ có kế hoạch sử dụng nano, bạn cũng có thể loại bỏ nó. Sau đó, hệ thống sẽ sử dụng vi / vim làm mặc định.

sudo apt-get purge nano

Tôi biết đó không phải là câu trả lời chính thức, nhưng nó là một trong những lệnh đầu tiên đối với tôi sau khi cài đặt Ubuntu.


Điều này chắc chắn đủ điều kiện là "hoại tử", nhưng hey ... Câu trả lời của bạn rất thú vị, vì nó liên quan đến Ubuntu. Một số bản phân phối khác (ArchLinux trong số chúng) chỉ có (các) trình soạn thảo bạn đã cài đặt ở vị trí số 1, do đó bạn không gặp phải pbm mà tôi gặp phải với Ubuntu, cũng không cần phải dùng đến biện pháp bạn đề xuất. Trong trường hợp có sẵn (ubfox + nano + vim), tôi cảm thấy rằng nhiều người có thể cần một tùy chọn về mặt biên tập viên. Đó là sự thật hiếm khi người ta thấy thích emacsvimtích cực cùng tồn tại trên bất kỳ hồ sơ nào của người dùng. Tuy nhiên nanovimxảy ra cùng nhau trong tự nhiên ... Giữ nano!
Cbhihe

chắc chắn là câu trả lời hay nhất
botkop

emacsvimvui vẻ cùng tồn tại và liên tục được sử dụng. nanocũng giống như dịch hại, nó càng được loại bỏ khỏi hệ thống càng sớm càng tốt. Tôi hiểu rằng một số người có thể thấy thoải mái, nhưng câu trả lời này là hoàn toàn hợp lệ.
mementum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.