我不明白在使用 sudo 时如何允许在我通过vi编辑的文件中突出显示语法。当我sudo vi <filename>的终端只是我的终端设置的黑白时。在 vi 如果我输入:syntax on什么都没有改变。
当我vi <filename>所有的语法都正确着色时。使用 RHEL 5.4,相关环境:
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;
33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;
32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;
32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;
31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;
31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;
35:*.png=01;35:*.tif=01;35:
Run Code Online (Sandbox Code Playgroud)
SHELL=/bin/bash
Run Code Online (Sandbox Code Playgroud)
TERM=xterm-color
Run Code Online (Sandbox Code Playgroud) 可能重复:
vim 以 root 身份重新编辑
我可以发誓我看到了这个问题。但是在查看了“vi”的每个搜索结果后,我感到难倒/懒惰。
我打开了一个文件,进行了编辑,现在我意识到它是只读的,我以非 root 身份打开它。
有没有办法记录vi活动?我怀疑另一个用户通过进入 vi 编辑器内的 shell 发出命令,显然这些命令没有记录到历史中。
好的 - 我是 linux 新手 - 我试图edit <filename>在默认模式下通过命令从 bash 编辑文件(我假设是“vi”?)。
问题是我不知道如何保存和退出编辑模式 -这个备忘单似乎暗示 ESC 应该做这个伎俩,但它似乎不起作用。
我正在通过 ssh 从 mac 连接到 linux suse Enterprise 11 box。
任何帮助表示赞赏!
我有两个远程服务器:
服务器 1:Linux 2.6.18-238.12.1.el5PAE i686 / VIM - Vi 改进 - 版本 7.0.237
服务器 2:Linux 2.6.18-338.19.1.el5.lve0.8.36 x86_64 / VIM - Vi IMproved 版本237
当我通过 ssh 进入服务器 2 并使用 vim 编辑一个php或.htaccess文件时,它具有漂亮的颜色突出显示。下面是/etc/vimrc服务器上文件。
当我通过 ssh 进入服务器 1 时,没有显示颜色。我尝试将下面的代码复制到服务器 1 上的 ~/.vimrc 文件中,但颜色语法不起作用。其他功能(如set nocompatible)有效,但颜色无效。
为什么颜色在服务器 1 上不起作用,我该如何测试和修复它?tput colors在两个终端返回8。我试过了:syntax on,:syntax enable但这也无济于事。
------------------------------------------------------------
/etc/vimrc文件内容:
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set fileencodings=utf-8,latin1
endif
set nocompatible " Use …Run Code Online (Sandbox Code Playgroud) 当我使用crontab -e它编辑 crontab 时,它会在 vi 中打开 crontab。我更喜欢它使用纳米。我怎样才能改变这个?
编辑:
出于某种原因,该export命令返回command not found. 并且更改 EDITOR env 值对crontab -e.
以下命令适用于我的系统:
setenv VISUAL /usr/local/bin/nano
我已经看到了很多关于如何在vi编辑模式下显示/隐藏行号的示例/用法。
打开行号::set number在编辑模式下输入
关闭行号::set nonumber在编辑模式下输入
我想知道在从命令行打开文件时是否有任何方便的方法/选项(我可能不知道)来指定/提及此选项?
注意:例如,要在打开文件后转到特定行,我们可以vi +/<linenumber> <filename>从命令行方便地说。
我正在用 vipw 编辑 passwd 文件,当时我短暂地失去了互联网连接。当我重新登录并尝试再次编辑时,出现错误:
vipw: Couldn't lock file: Interrupted system call
vipw: /etc/passwd is unchanged
Run Code Online (Sandbox Code Playgroud)
我假设这意味着 passwd 文件在我编辑它的中断时间仍然被锁定。我怎样才能解决这个问题?
多年来,我已经习惯于在“vi”中编辑 Perl CGI 脚本并同时打开浏览器来测试它们。最近,当我这样做时,我收到了“500”服务器错误,当我从 shell 运行脚本时,我得到“错误解释器:文本文件繁忙”。唯一的解决方案是每当我想测试脚本时退出“vi”,这是一种极大的痛苦,应该完全没有必要。那是怎么回事?我正在运行一个 Debian 服务器,我会定期更新它,我假设它是从一些所谓的“升级”开始的:)
我们有一个名为 JBossAdmins 的组,该组的用户必须在 RHEL 6 上编辑一些 /etc 文件:
我的第一个想法是授予以下 sudo 权限:
%JBossAdmins ALL=(root) /bin/vi /etc/httpd/*
%JBossAdmins ALL=(root) /bin/vi /etc/java/*
%JBossAdmins ALL=(root) /bin/vi /etc/jboss/*
Run Code Online (Sandbox Code Playgroud)
显然,用户现在可以以 root 身份启动 vi,然后通过执行 fe 来编辑任何文件 :e /etc/passwd
所以 sudo 不是一个好主意。
然后我想到做一个chgrp JBossAdmins -R path然后一个chmod g+rw -R path。
但我也不太确定这是否是个好主意。
因此,考虑到安全隐患,允许一组用户编辑某些 /etc 文件的最佳做法是什么?有比 sudo 或 chgrp/chmod 更好的选择吗?