Results tagged “vim” from 清茶 Blog
默认的状态行,左侧显示当前打开的文件名,
通常状态行用反色显示。
定制状态行
我们可以使用以下命令来定义状态行:
:set statusline format
例如下面的命令:
:set statusline=The file is"%f"
其中,%用来指明一个特殊区域。例如%f,
选项包含printf风格的%项目,中间可以间杂普通文本。
如果此选项以 "%!" 开始,它用作表达式。计算此表达式的结果用作选项值。
| %(...%) | 定义一个项目组。 |
| %{n}* | %对其余的行使用高亮显示组Usern,直到另一个%n*。 |
| %< | 如果状态行过长,在何处换行。缺省是在开头。 |
| %= | 左对齐和右对齐项目之间的分割点。 |
| % | 字符% |
| %B | 光标下字符的十六进制形式 |
| %F | 缓冲区的文件完整路径 |
| %H | 如果为帮助缓冲区则显示为HLP |
| %L | 缓冲区中的行数 |
| %M | 如果缓冲区修改过则显示为+ |
| %N | 打印机页号 |
| %O | 以十六进制方式显示文件中的字符偏移 |
| %P | 文件中光标前的% |
| %R | 如果缓冲区只读则为RO |
| %V | 列数。如果与%c相同则为空字符串 |
| %W | 如果窗口为预览窗口则为PRV |
| %Y | 缓冲区的文件类型,如vim |
| %a | 如果编辑多行文本,这个字行串就是({current} of {arguments}),例如:(5 of 18)。如果在命令行中只有一行,这个字符串为空 |
| %b | 光标下的字符的十进制表示形式 |
| %c | 列号 |
| %f | 缓冲区的文件路径 |
| %h | 如果为帮助缓冲区显示为[Help] |
| %l | 行号 |
| %m | 如果缓冲区已修改则表示为[+] |
| %n | 缓冲区号 |
| %o | 在光标前的字符数(包括光标下的字符) |
| %p | 文件中所在行的百分比 |
| %r | 如果缓冲区为只读则表示为[RO] |
| %t | 文件名(无路径) |
| %v | 虚列号 |
| %w | 如果为预览窗口则显示为[Preview] |
| %y | 缓冲区的文件类型,如[vim] |
| %{expr} | 表达式的结果 |
显示状态行
即使已经使用以上命令设置选项,状态行还是保持原样,
:set laststatus=2
你也可以使用以下命令,移去状态行:
:set laststatus=0
状态行实例
利用以下命令,可以在状态行中显示:当前文件名,文件格式(
:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
实际效果如下图所示:
除了显示的内容,你还可以使用以下命令定义显示的颜色。
:set statusline=%2*%n%m%r%h%w%*\ %F\ %1*[FORMAT=%2*%{&ff}:%{&fenc!=
需要使用以下命令,自定义高亮显示颜色。
hi User1 guifg=gray
hi User2 guifg=red
hi User3 guifg=white
实际效果如下图所示:
你还可以通过在_vimrc文件中包括以下命令,
function! InsertStatuslineColor(mode)
if a:mode == 'i'
hi statusline guibg=peru
elseif a:mode == 'r'
hi statusline guibg=blue
else
hi statusline guibg=black
endif
endfunction
au InsertEnter * call InsertStatuslineColor(v:
au InsertLeave * hi statusline guibg=orange guifg=white
hi statusline guibg=black
如下图所示,状态行的文件名部分,在插入状态时显示为橘色背景,
:set statusline format | 定制状态行 |
:set laststatus | 显示/取消状态行 |
嘿嘿......
写好的配置文件在不是自己的机器上跑服务,总是怕别有用心的人偷看并...... 加密一下
使 用 XXD
一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
首先以二进制方式编辑这个文件:vim -b datafile
现在用 xxd 把这个文件转换成十六进制::%!xxd
文本看起来像这样:0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.00000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.
现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
修改了十六进制部分并不导致可打印字符部分的改变,反之亦然。
最后, 用下面的命令把它转换回来::%!xxd -r
只有十六进制部分的修改才会被采用。右边可打印文本部分的修改忽略不计。
欲知更多详情,参见 xxd 手册。
