以下命令打开鼠标: :set mouse=a 否则 Vim 不会在所有模式下识别鼠标 (见 'mouse')。
目前,鼠标只有在 Unix 的 xterm 窗口、Linux 终端 (带 GPM |gpm-mouse|)、MS-DOS 和 Windows 终端上才支持。鼠标键击可以用来定位光标,设置区域并粘贴。
'mouse' 选项的字符决定 Vim 在什么场合下会使用鼠标: n 普通模式 v 可视模式 i 插入模式 c 命令行模式 h 在帮助文件里,以上所有的模式 a 以上所有的模式 r 跳过 |hit-enter| 提示
'mouse' 的缺省值为空,即不使用鼠标。通常你会用: :set mouse=a 来开始使用鼠标 (这等价于设置 'mouse' 为 "nvich")。如果你只想在若干模式下或者在 某两个任务上使用鼠标,你需要专注于那些模式对应的字母。例如: :set mouse=nv 会使得鼠标在普通模式和可视模式下工作。 :set mouse=h 会使得鼠标只有在帮助文件里工作 (这样,可以用 "g<LeftMouse>" 来进行标签跳转)。
鼠标能否在可视模式或者选择模式下开始选择,决定于 "selectmode" 选项包不包括 "mouse"。
在 xterm 终端里,在 'mouse' 选项包含当前激活的模式的前提下,普通的鼠标键击归 Vim 使用,而带 shift 或者 ctrl 键的鼠标键击由 xterm 控制。如果 'mouse' 不包括 当前激活的模式,则所有的鼠标键击由 xterm 控制。
*xterm-clipboard* Athena 和 Motif GUI 版本上,如果在终端运行但是可以访问 X-server (设置了 DISPLAY),那么复制和粘贴和 GUI 上的行为相似。如果不是,那么鼠标中键会插入无名 寄存器。这种情况下,这里是如何复制和粘贴一段文本的方法:
用鼠标和可视模式复制/粘贴 ('mouse' 选项必须设置,见上): 1. 在文本的第一个字符上按鼠标左键,移动鼠标到文本的最后一个字母,然后释放左 键。这会启动可视模式并高亮选择区域。 2. 按 "y" 抽出可视文本到无名寄存器里。 3. 在要插入的位置上按鼠标左键。 4. 按鼠标中键。
快捷方式: 如果插入位置和可视文本同时出现在屏幕上,你可以一次做 2、3 和 4: 在要 插入的位置直接按鼠标中键。
注意: 如果使用 |-X| 命令行参数,Vim 不会连接到 X 服务器,所以复制/粘贴到 X 剪 贴板 (选择区) 不会工作。使用带 shift 键的鼠标键来让 xterm 完成选择。
*xterm-command-server* 如果 X-服务器的剪贴板可用,|x11-clientserver| 的命令服务器可以在命令行用 --servername 打开。
*xterm-copy-paste* 注意: 在有些 (较老的) xterm 版本里,光标不能移动超过第 95 列。这是 xterm 的问 题,不是 Vim 的。用新一点的 xterm 吧 |color-xterm|。
使用 xterm 粘贴/复制 (当前模式_不_包括在 'mouse' 里): 1. 在文本的第一个字符上按鼠标左键,移动鼠标到文本的最后一个字母,然后释放。 2. 使用普通的 Vim 命令把光标移动到待插入的位置。 3. 按 "a" 开始插入模式。 4. 按鼠标中键。 5. 按 ESC 退出插入模式。 (对包含在 'mouse' 里的模式,这里的操作同样可以完成,只要你在使用鼠标的时候按住 shift 键就行了。)
注意: 如果你在粘贴的时候丢失了第 8 位 (特殊字符被翻译成其他字符),你需要在启动 Vim 之前在外壳上执行 "stty cs8 -istrip -parenb"。
这样,在 xterm 上 shift 和 ctrl 键不能和鼠标一起使用。需要 CTRL 修饰符的鼠标命 令可以在使用鼠标前按 "g" 键模拟: "g<LeftMouse>" 是 "<C-LeftMouse> (跳转到鼠标点击的标签上) "g<RightMouse>" 是 "<C-RightMouse> ("CTRL-T")
*mouse-mode-table* *mouse-overview* 如果 'mousemodel' 是 "extend" ,鼠标按钮的功能的概述在此:
普通模式: 事件 移动光标 选择 改变窗口 行动 <LeftMouse> 是 结束 是 <C-LeftMouse> 是 结束 是 "CTRL-]" (2) <S-LeftMouse> 是 不改变 是 "*" (2) *<S-LeftMouse>* <LeftDrag> 是 开始或者扩展 (1) 否 *<LeftDrag>* <LeftRelease> 是 开始或者扩展 (1) 否 <MiddleMouse> 是 如果没有激活 否 放置 <MiddleMouse> 是 如果激活 否 抽出和放置 <RightMouse> 是 开始或者扩展 是 <A-RightMouse> 是 开始或者扩展列块 是 *<A-RightMouse>* <S-RightMouse> 是 不改变 是 "#" (2) *<S-RightMouse>* <C-RightMouse> 否 不改变 否 "CTRL-T" <RightDrag> 是 扩展 否 *<RightDrag>* <RightRelease> 是 扩展 否 *<RightRelease>*
插入或替换模式: 事件 移动光标 选择 改变窗口 行动 <LeftMouse> 是 (不能激活) 是 <C-LeftMouse> 是 (不能激活) 是 "CTRL-O^]" (2) <S-LeftMouse> 是 (不能激活) 是 "CTRL-O*" (2) <LeftDrag> 是 开始或者扩展 (1) 否 类似于 CTRL-O (1) <LeftRelease> 是 开始或者扩展 (1) 否 类似于 CTRL-O (1) <MiddleMouse> 否 (不能激活) 否 放置寄存器内容 <RightMouse> 是 开始或者扩展 是 类似于 CTRL-O <A-RightMouse> 是 开始或者扩展列块 是 <S-RightMouse> 是 (不能激活) 是 "CTRL-O#" (2) <C-RightMouse> 否 (不能激活) 否 "CTRL-O CTRL-T"
在帮助窗口里: 事件 移动光标 选择 改变窗口 行动 <2-LeftMouse> 是 (不能激活) 否 "^]" (帮助标签跳转)
当 'mousemodel' 为 "popup" 时,下面这些有所差异:
普通模式: 事件 移动光标 选择 改变窗口 行动 <S-LeftMouse> 是 开始或者扩展 (1) 否 <A-LeftMouse> 是 开始或者扩展列块 否 *<A-LeftMouse>* <RightMouse> 否 弹出菜单 否
插入或替换模式: 事件 移动光标 选择 改变窗口 行动 <S-LeftMouse> 是 开始或者扩展 (1) 否 类似于 CTRL-O (1) <A-LeftMouse> 是 开始或者扩展列块 否 <RightMouse> 否 弹出菜单 否
(1) 只有当鼠标在按键后发生移动 (2) 只有当点击发生在同一缓冲区时
点击鼠标左键改变光标的位置。如果点击发生在另一个窗口,那么那个窗口成为活动窗 口。在编辑命令行时,光标只能定位在命令行上。在插入模式下,Vim 仍然保持在插入模 式。如果设置了 'scrolloff',而光标定位在窗口边界 'scrolloff' 行范围内,则文本 被滚动。
在第一个字符上按鼠标左键,移动鼠标到最后一个字符,然后释放,可以进行选择。直到 你释放鼠标键,你不一定总能看到选择的区域。只有一些版本能够 (GUI、MS-DOS、 WIN32) 使得拖动立即显示。注意 如果 'scrolloff' 非零,你可以在窗口的首/ 末行移 动鼠标至少一个字符位置使文本滚动。
在普通、可视和选择模式下,单击鼠标右键使得可视区域被扩展。如果 'mousemodel' 为 'popup',必须使用按住 shift 键的鼠标左键。如果在编辑另外一个缓冲区时点击一个窗 口,可视和选择模式被终止。
在普通、可视和选择模式下,按下 Alt 键同时单击鼠标右键,可使选择区域成为面向列 块。当 'mousemodel' 被设置为 "popup",鼠标左键必须和 Alt 键一起使用。注意在某 些系统中失效,那些系统中的窗口管理器在按下 Alt 键时会吃掉鼠标事件 (可能会移动 窗口)。
*double-click* 双击、三击和四击在 GUI 激活时、MS-DOS 和 Win32,以及 xterm (如果有 gettimeofday() 函数) 上得到支持。对于文本选择,附加的点击会扩展选择区: 点击 选择 两次 单词或者 % 匹配 *<2-LeftMouse>* 三次 行 *<3-LeftMouse>* 四次 矩形区域 *<4-LeftMouse>* 特例: 在帮助窗口上,双击跳到点击的单词对应的帮助。 双击单词选择该单词。'iskeyword' 用来指定单词可以包括哪些字符。双击一个有匹配的 字符选择直到该匹配的区域 (类似于 "v%")。如果匹配是 #if/#else/#endif 块,选择变 为面向行。 MS-DOS 和 xterm 上,双击相隔的时间可以通过 'mousetime' 选项设置。其他系统上, 该值只能在 Vim 之外定义。 一个使用双击跳转到光标所在的标签的例子: :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR>
使用双击拖动鼠标 (按下按钮、抬起按钮、按下按钮、然后拖动) 会导致完整的多个单词 被选择,直到按钮被释放为止。这时选择重新以字符为单位。
*gpm-mouse* GPM 鼠标只有在编译时打开 |+mouse_gpm| 特性才有效。GPM 鼠标驱动 (Linux 终端) 不 支持四击。
插入模式下,但选择开始时,Vim 暂时回到普通模式。在可视或者选择模式结束时,又回 到插入模式。这类似于在插入模式下使用 CTRL-O 的情形。选择模式在 'selectmode' 选 项包含 "mouse" 时被使用。
*drag-status-line* 如果有多个窗口一起工作,窗口的大小可以用通过鼠标拖动状态行来改变。把鼠标点在状 态行上,按左键,移动鼠标把状态行带到新的位置,再释放左键。只是用鼠标点击状态行 而不移动鼠标使得那个窗口成为当前窗口。如果选择了一个窗口会改变状态行的位置或大 小,状态行的拖动看起来很奇怪,但还是会工作的 (试试吧)。
*<MiddleRelease>* *<MiddleDrag>* 鼠标点击可以映射。鼠标点击的代码是: 代码 鼠标按钮 一般的行动 <LeftMouse> 按住左键 设置光标位置 <LeftDrag> 按住并移动左键 扩展选择区 <LeftRelease> 释放左键 结束选择区 <MiddleMouse> 按住中键 在光标所在的位置上粘贴 <MiddleDrag> 按住并移动中键 - <MiddleRelease> 释放中键 - <RightMouse> 按住右键 扩展选择区 <RightDrag> 按住并移动右键 扩展选择区 <RightRelease> 释放右键 结束选择区 <X1Mouse> 按住 X1 键 - *X1Mouse* <X1Drag> 按住并移动 X1 - *X1Drag* <X1Release> 释放 X1 键 - *X1Release* <X2Mouse> 按住 X2 键 - *X2Mouse* <X2Drag> 按住并移动 X2 - *X2Drag* <X2Release> 释放 X2 键 - *X2Release*
X1 和 X2 按钮指一些鼠标上的附加按钮。'Microsoft Explorer' 鼠标在右拇指位置有这 些键。目前 X1 和 X2 只能用于 Win32 环境。
示例: :noremap <MiddleMouse> <LeftMouse><MiddleMouse> 在鼠标中键点击的位置粘贴 (不然,粘贴在光标所在的位置进行)。
:noremap <LeftRelease> <LeftRelease>y 在可视模式下立即抽出选择区。
注意使用了 ":noremap" 而不是 "map",以免发生递归映射。
:map <X1Mouse> <C-O> :map <X2Mouse> <C-I> 把 X1 和 X2 键定义为跳转表的前进和后退,见 |CTRL-O| 和 |CTRL-I|。
*mouse-swap-buttons* 要交换鼠标左键和右键的含义: :noremap <LeftMouse> <RightMouse> :noremap <LeftDrag> <RightDrag> :noremap <LeftRelease> <RightRelease> :noremap <RightMouse> <LeftMouse> :noremap <RightDrag> <LeftDrag> :noremap <RightRelease> <LeftRelease> :noremap g<LeftMouse> <C-RightMouse> :noremap g<RightMouse> <C-LeftMouse> :noremap! <LeftMouse> <RightMouse> :noremap! <LeftDrag> <RightDrag> :noremap! <LeftRelease> <RightRelease> :noremap! <RightMouse> <LeftMouse> :noremap! <RightDrag> <LeftDrag> :noremap! <RightRelease> <LeftRelease>
vim:tw=78:ts=8:ft=help:norl:
参考 http://topic.csdn.net/u/20081124/17/ce367f9f-bf3a-4d84-a075-341d9e7bc509.html |
linux 鼠标设置
最新推荐文章于 2024-05-22 06:00:00 发布