Vim

31 篇文章 0 订阅
30 篇文章 0 订阅

---------------------------------------------------------------------------

Windows 下使用 GVim

自动保存
默认情况下用GVim编辑文件时,会自动生成带~的备份文件。如果不想在编辑文件时自动生成备份文件的话,可以这么做:打开GVim安装目录下的vimrc_example.vim,将其中的如下部分中的else语句用引号注释掉:
if has("vms")
  set nobackup    " do not keep a backup file, use versions instead
else
  set backup      " keep a backup file
即将上面四句改为:
if has("vms")
  set nobackup      " do not keep a backup file, use versions instead
" else
"   set backup      " keep a backup file
里,else部分用双引号注释掉即可。set backup是设置使用自动生成备份文件的命令。

编辑utf-8编码文件
编辑文件时,使用set encoding=utf-8命令即可编辑和保存utf-8编码的文件。

让GVim默认语法高亮
Windows下的GVim默认是不语法高亮的。在用户主目录下的_vimrc中加上如下行:
syntax on
再开GVim时就是语法高亮的了

---------------------------------------------------------------------------

 vim 的一些高级用法

说明:如果你准备把本文中的命令放到配置文件(比如 .vimrc)中而不是在命令行执行,那么请去掉开头的冒号。

★ 键映射
:maptype key command
其中,key 是要映射的键(序列),command 是所要映射的命令,maptype 包括如下几种:
map  命令,可视和命令追加模式下的键映射
vmap 可视模式下的键映射
nmap 命令模式下的键映射
omap 命令追加模式下的键映射
map! 插入和命令行模式下的键映射
imap 插入模式下的键映射
cmap 命令行模式下的键映射
说明:命令追加模式指的是命令输入中的状态,也就是在输入一个需要多个按键的命令时,已经开始输入但未完成的状态。
举个例子,
:map <F2> gg
的意思是在命令,可视和命令追加模式把 F2 键映射为命令 gg,也就是说,当在这三种模式下时,按下 F2 键,就相当于按下了键序列 gg,其作用是定位到第一行。

要想避免 vim 把你映射的 command 中的内容再次映射的话,应该使用 noremap,其格式与 map 时相同。这时候,上面的各种 maptype 分别对应如下:
noremap  命令,可视和命令追加模式下的键映射(无二次映射的)
vnoremap 可视模式下的键映射(无二次映射的)
nnoremap 命令模式下的键映射(无二次映射的)
onoremap 命令追加模式下的键映射(无二次映射的)
noremap! 插入和命令行模式下的键映射(无二次映射的)
inoremap 插入模式下的键映射(无二次映射的)
cnoremap 命令行模式下的键映射(无二次映射的)

取消一个键映射用 unmap,格式为 unmap key。其中 key 为之前定义了映射的键,unmap 可以换为如下几种之一:
unmap  取消命令,可视和命令追加模式下的键映射
vunmap 取消可视模式下的键映射
nunmap 取消命令模式下的键映射
ounmap 取消命令追加模式下的键映射
unmap! 取消插入和命令行模式下的键映射
iunmap 取消插入模式下的键映射
cunmap 取消命令行模式下的键映射

★ 把当前目录设为正在编辑的文件所在的目录
:cd %:p:h
说明:只在类 Unix 操作系统下可用。
:lcd %:p:h
说明:在所有操作系统下可用。

★ 打开文件的时候自动将当前目录设为该文件所在的目录
在 .vimrc 中加入如下行:
:au BufEnter * :cd! %:p:h

★ 转换文件格式
由于 Unix、Window 和 MacOS 的换行符的内部表示不一样,因此有时候需要转换文件格式。
将文件格式转换为 Unix 格式:
:set fileformat=unix
将文件格式转换为 Windows 格式:
:set fileformat=dos

★ 让 gvim 启动时窗口最大化(只在 Windows 下可用)
在 _vimrc 中加入如下行
autocmd GUIEnter * simalt ~x

★ 关于大小写敏感
:set ignorecase           使 vim 在搜索或替换时对大小写不敏感;
:set noignorecase         使 vim 在搜索或替换时对大小写敏感;
:set ignorecase smartcase 只有在搜索模式中至少包含一个大写字母时, 才对大小写敏感。
在搜索模式前(中)加 /c 将使本次搜索对大小写不敏感,而加 /C 则将使本次搜索对大小写敏感。/c 和 /C 优先于 ignorecase 和 noignorecase 的设置,但它们只影响本次搜索。

★ 关于偏移
默认情况下, 搜索到一个目标后光标会停留在目标字符串的第一个字符上。
如果在搜索模式后加 /e,则搜索到一个目标后光标会停留在目标字符串的最后一个字符上。/e 后还可以加 +n 或 -n 来微调偏移,其中 n 是阿拉伯数字,+n 表示从最后一个字符再往右移 n 个字符的位置,-n 则是往左。
在搜索模式后加 /b,则搜索到一个目标后光标会停留在目标字符串的第一个字符上。当然,一般情况下,/b 是用不着的,因为默认效果就是这样。/b 只有在加上 +n 或 -n 才显得有用,其中 +n 和 -n 的含义和 /e 的情况一样。
在搜索模式后加 /+n 或 /-n 则可以对搜索到目标后的光标位置进行行数上的调整。+n 表示目标往前 n 行的行首,-n 表示目标往后 n 行的行首,其中 +n 中的 + 号可以省略。

★ 模式匹配
匹配前面的匹配原时要求完整匹配 (不能回溯)。模式 /(a*/)/@>a 将导致无匹配,因为 a* 已经用尽了所有的  a,导致后面的 a 无法匹配,整个模式也无法匹配。
参考:http://vcd.gro.clinux.org/doc/pattern.html

★ 关于终端类型
用 fterm 进行 ssh 登录的话,默认的终端类型为 vt100,而 vim 是不认识这种类型的终端的,因此此时用 vim 会没有彩色显示。这时候只要在 vim 的配置文件中加上如下行
set term=ansi
就可以了。如果设成 ansi 还是不行,可以用值 linux, xterm 试试,还不行的话,就把 vim 提示的内建终端类型挨个试一遍 :)
不在 vim 的配置文件里设的话,在 bash 的配置文件 .bashrc 中设也可以。.bashrc 添加的行应为
export TERM=ansi

★ 让 Windows 下的五笔加加中英文输入友好共存的办法(这个办法是偶然发现的 :))
操作系统:Microsoft Windows XP Professional 5.1.2600 Service Pack 2 Build 2600
Vim:VIM - Vi IMproved 7.0 (2006 May 7, compiled May  7 2006 16:23:43)
输入法:五笔加加 Plus 2.6
方法:将输入法切换到五笔加加中文输入,按 r 键,按回车确定,此时 vim 处于等待输入替换字符的状态。按 Esc 键取消,之后中英文就可以友好共存了:在命令状态下输入被当作英文解释,在插入状态和等待非命令输入的状态下输入被当作中文解释。

---------------------------------------------------------------------------

又懂了一点 vim 的模式,嘿嘿

想弄明白 /@<! 的意思,于是看 vim 的中文文档(http://vcd.gro.clinux.org/doc/pattern.html)。结果 /@<! 看明白了,又被 /@! 中的例子 a./{-}p/@! 弄晕了。看文档加实践,花了两三个小时,总算弄明白了,记录如下以备忘:

模式:"/{-}"
意义:匹配 0 个以上前面的匹配原,尽可能少。(类似于 *,但 * 是尽可能多地匹配)

例:
样本:
aappp appbppppp apb app a ap abppp appp哈ppp

模式"a./{-}"在该样本中匹配所有的"a",在这个模式中,"./{-}"确实被“尽可能少”地匹
配成了空;但当模式变为"a./{-}p/@!"时,情况就变了,在这里,"./{-}"仍然是“尽可能
少”地匹配,但此时它的“尽可能少”必须符合整个模式的需要──找出尽可能短的以"a"
开头并且后面不跟"p"的字符串

---------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值