0%

可以上墙的广播命令wall

Linux wall命令会将信息传给每一个 mesg 设定为 yes 的上线使用者(可以输入mesg,如果返回is yes就可以收到)。当使用终端登陆的时候,可以使用EOF (通常用 Ctrl+D)。所有人均可以使用该命令。

官方的定义为:

wall – send a message to everybody’s terminal.

所以wall应该是write all user’s teminal的缩写。

使用的方法为:

1
$ wall [-n] [ message ]

其中参数-n的含义为,修改显示的广播信息放松抬头,看示例即可明白。

这个命令的使用场景为如果需要升级维护系统,可以通过wall命令通知所有在线的用户。

如下:

1
2
3
4
5
6
7
8
9
10
11
$ wall
Dear all,
We want to make you aware that this weekend 12PM CST,
there will be scheduled down time for approximately 6 hours.
During this time we will add more capacity and software update
to our infrastructure and service.
Please save all your works and logout for safe.
See you next week.
Regards,
Admin
Ctrl+D #退出

所有登陆的终端都会收到这个消息:

1
2
3
4
5
6
7
8
9
10
11
Broadcast message from user@localhost (pts/4) (Mon Apr 18 22:02:22 2011):

Dear all,
We want to make you aware that this weekend 12PM CST,
there will be scheduled down time for approximately 6 hours.
During this time we will add more capacity and software update
to our infrastructure and service.
Please save all your works and logout for safe.
See you next week.
Regards,
Admin

需要注意的是,这个命令最大支持20行的信息,超过了就不会广播了。

如果使用-n参数的效果如下

1
2
3
4
5
6
$ wall -n 'hello'

# 其他终端用户收到的消息
Remote broadcast message (Mon Apr 18 22:05:22 2011):

hello

可以看到此时的通知抬头变成了 Remote broadcast message,去掉了是哪个用户发送的消息。

退出vim

  • : x :wq ZZ 保存文件并且退出
  • :q! :qa 退出但不保存文件

保存文件

使用*:w* 和 :u 都可以保存文件,其中w代表write,u代表update的含义。

如果只是输入上述命令,则直接保存文件,当然也可以使用*:w anotherFilename*来另存为另一个新的文件。

自动保存文件

当你试图切换缓冲区或者文件时,如果你没有保存改变时Vim通常会给出错误消息。

启用切换缓冲区/文件时自动写入文件,命令如下:

1
:set autowrite

使用单个命令写入所有文件(这可能在宏中非常有用)

1
:wall

保存文件时发生的问题

  1. 尝试保存文件已存在,可以输入*:w! file用来覆盖现有的文件,或者:w newfile*将编辑的结果写入新的文件;
  2. 得到文件系统已满的消息,可以输入*:!rm junkfile来删除一个不需要的打文件,空出一些空间(在冒号后加上感叹号,然后就可以执行shell命令),或者输入:!df看看其他文件系统有没有空间,如果有,先放入其他文件系统,用:w pathname*来写入你的文件。
  3. 系统进入开放模式并且显示文件系统已满的消息,可以输入*:!ls /tmp来查看有无可以移除的文件,以腾出一些空间。如果有的话,可以先创建一个临时的unix shell,以便移除,直接输入:sh可以打开一个新的暂时的shell*,移除后,可以输入exit返回到vi,或者使用CTRL+Z来将vi暂停,放到后端,使用fg即可以回到vi。
  4. 尝试写入文件,却得到磁盘限额已满的消息,可以实时*:pre(:preserve)*的缩写,强迫系统保存你的缓冲区。

使用当前行重绘屏幕

导航键 描述
z然后ENTER 将光标行移到屏幕顶端并滚动屏幕
z. 将光标行移到屏幕中心并滚动屏幕
z- 将光标行移到屏幕底端并滚动屏幕
200z然后ENTER 会把第200行移到屏幕顶端

VIM 重复命令

  • @@ : 重复上一个执行宏
  • n:以相同的方向重复上一个搜索命令;
  • N:以相反的方向重复上一个搜索命令;
  • . :重复上一个编辑命令;
  • @:重复上一个命令行

VIM快速选中并复制粘贴替换一个单词

  1. 比如准备用bbb替换aaa
  2. 光标移动到aaa的开头,按 v 按e 按y
  3. 光标移动到bbb的开头,按 v 按e 按p

VIM 撤销和重做

  • u:可以撤销上次的操作;
  • Nu:可以撤销前N次的操作;
  • U:撤销当前行的所有修改;
  • :red或者CTRL+R:可以撤销还原;

关于gvim

gVim是Vim的图形前端,它是跨平台的编辑器,基本上主流的操作系统上面都有它的版本。

##显示或隐藏gvim的菜单和工具栏

使用:set guioptions命令。

例如隐藏工具栏*:set guioptions-=T,再次显示工具栏为:set guioptions+=T*

UI元素命令 描述
:set guioptions+=TmrlRL 显示所有gvim的GUI元素
:set guioptions-=TmrlRL 隐藏所有gvim的GUI元素
:set guioptions-=T 隐藏gvim工具栏
:set guioptions-=m 隐藏gvim菜单栏
:set guioptions-=r 隐藏gvim右边的滚动栏
:set guioptions-=l 隐藏gvim左边的滚动栏
:set guioptions-=R Hide gVim Right side scroll bar that appears when window is split vertically
:set guioptions-=L Hide gVim Left side scroll bar that appears when window is split vertically

gVim中改变字体

你可能不喜欢gVim的缺省字体,你可以使用下面两种方法来修改它。

方法1:

该例子设置字体类型为Courier New,大小为10。对于这种方式,你应该已经知道字体的名称。

1
:set guifont=Courier\ New:h10

方法2:

下面的方法将打开一个字体选择UI,在对话框中你可以选择字体类型和大小。

1
:set guifont=*

Swap文件

使用-r选项来列出当前目录下的Swap文件,~/tmp、/var/tmp、/tmp。

下面的命令显示所有的swap文件。

1
$ vim -r

当一个swap文件存在时,如果你试图打开它的原始文件,你会得到覆盖swap文件的消息,原因是:

  • 一些人正在编辑文件;
  • 基于为什么会发生下面Vim提示中的一种,如下所示:
  • 打开只读文件(查看文件内容);
  • 任何地方进行编辑(编辑文件内容);
  • 恢复(使用交换文件来替代文件内容);
  • 退出或崩溃。

PS1默认提示符

可以通过修改Linux下的默认提示符,使其更加实用。

默认的PS1的值是“\s-\v$”,显示出了shell的名称的版本。我们通过修改,可以使其显示用户名、主机名和当前工作目录。 export PS1=”\u@\h \w>”

PS1使用的一些代码如下:

  • \u — 用户名
  • \h — 主机名
  • \w — 当前目录的完整路径。

请注意当你在主目录下的时候,如上面所示只会显示~ 注意,在PS1值之后有一个空格。从个人角度来讲,使用这个空格可以增加一定的可读性。

将export PS1=”\u@\h \w>” 添加到.bash_profile 或者 .bashrc中,则可以保证其永久有效。