常用Vim命令及实用Vim按键映射配置详解

更新日期: 2019-12-22阅读: 3k标签: 命令

Vim按键映射可用于设置Vim命令或命令串的别名,完成个性化Vim按键设置。

Vim命令虽然很多,但是常用的Vim命令却被使用者所熟知。通过 Vim 按键映射,可减少按键次数、提供Vim的工作效率。

本文介绍15种常用的Vim按键映射配置,并详细分析了对应的Vim命令及功能。更多个性化Vim配置,推荐阅读《 无插件Vim配置及Vim命令介绍 》。


1. 打开/关闭显示行号按键映射

通过以下的 Vim 按键映射,可以在 Vim 的普通模式下按 F2 快速打开(或关闭)显示行号。

nnoremap <F2> :set nu! nu?<CR>

还可以根据个人使用需用,设置以下类似的按键映射。

nnoremap <F3> :set list! list?<CR>
nnoremap <F4> :set wrap! wrap?<CR>
nnoremap <F6> :exec exists('syntax_on') ? 'syn off' : 'syn on'<CR>


2. 退出Vim的按键映射

退出Vim是最常用的操作, :q 、 :w 等命令需要先按 : 键进入 Vim 命令行模式。Vim leader键 主要用于避免按键冲突,类似于命名空间的作用。

nnoremap <leader>q :q<CR>
nnoremap <leader>w :w<CR>

在上述按键映射的设置下,Vim 默认模式下,按 \q (因为默认的leader键是 \ )就等价于输入 :q 并按回车键执行,按 \w 等价于输入 :w 并按回车键执行之。


3. Vim全选按键映射

可以通过Vim 可视化模式 实现全选 Vim 中的全部文本。具体来说,先通过 gg 命令跳转到文件的首行,再按 V 进入可视化模式的行选择模式,再通过 G 命令将光标移动到尾行,从而实现选中全部文本的效果。

假设 leader 键是默认的 \ ,通过下面的 Vim 按键映射,可以实现按 \sa 全选当前文件所有文本的效果。

map <leader>sa ggVG"


4. Vim 缩进及按键映射配置

Vim可视化模式下, > 用于增加缩进;而 gv 命令可以用于重新选取上一次由可视模式所选择的文本范围。

为了避免丢失可视化模式下的选择本文,可增加如下 Vim 按键映射配置:

vnoremap < <gv      
vnoremap > >gv

5. Vim分割窗口切换映射

在 Vim 窗口分割模式下,默认可以使用 <Ctrl-w> 组合键进行窗口切换。例如, <Ctrl-w>j 可切换到下面的分割窗口, <Ctrl-w>k 可切换到上面的分割窗口, <Ctrl-w>h 可切换到左边的分割窗口,而 <Ctrl-w>l 可切换到右边的分割窗口。

但是,个人觉得上述按键太过繁琐,可以通过以下按键映射,减少按键次数。

map <C-j> <C-W>j                                                                                                                             
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

在上述Vim按键映射设置下,通过组合键 <Ctrl-j> 可切换到下面的分割窗口, <Ctrl-k> 可切换到上面的分割窗口, <Ctrl-h> 可切换到左边的分割窗口,而 <Ctrl-l> 可切换到右边的分割窗口。


6. Vim光标行移动

nnoremap k gk   
nnoremap gk k   
nnoremap j gj   
nnoremap gj j

nnoremap gk k 表示将 gk 按键映射 为 k ,从 Vim光标移动之实际行与屏幕行 一文可知, gk 表示上移一个屏幕行。


7. Vim行首、行尾光标移动按键映射

Vim 普通模式下, ^ 命令可将光标移动到当前行的第一个非空字符; $ 可将光标移动到当前行的行尾。

而 h 命令用于向左移动光标, l 命令用于向右移动光标。

所以,Vim教程网(https://vimjc.com)进行如下按键映射,实现按大写的 H 将光标 左移 至当前行的第一个字符,按大小的 L 将光标 右移 至当前行的最后一个字符。

nnoremap H ^      
nnoremap L $


8. Vim 命令行模式光标移动

在 Vim 的命令行模式下,如果想实现类似于《 高效Linux技巧及Vim命令 》一文提到的快速移动光标到行首的效果,可配置如下 Vim 按键映射。

cnoremap <C-j> <t_kd>
cnoremap <C-k> <t_ku>
cnoremap <C-a> <Home>
cnoremap <C-e> <End>

例如, cnoremap <C-a> <Home> 表示将 <Ctrl> a 组合键映射为 Home 键,从而实现在 Vim 命令行模式下按 <Ctrl> a 即可快速移动光标到行首的效果。

上述其他几个按键映射含义类似,在此不再赘述。


9. Vim 复制命令

y ( yank 的缩写形式) 命令用于复制文本到Vim寄存器中,其命令格式为: ["x]y{motion} ,表示 复制 {motion} 跨越的文本 [到寄存器 x] (参考:Vim文本编辑命令汇总)。

如果希望复制 从光标到行尾 所在范围的文本,可使用 y$ 命令。

以下 Vim 按键映射,将大写的 Y 按键映射为 y$ 。

map Y y$


10. Vim取消撤销操作

Vim 普通模式下,通过 u 可撤销上次的操作,而组合命令 <Ctrl r> 可取消撤销操作。为了减少按键操作,可将 U 键映射为 <Ctrl r> 命令,从而实现按 U 便可以 取消撤销 操作。

对应按键映射配置如下:

nnoremap U <C-r>


11. Vim 位置标记与跳转

如Vim位置标记mark详解一文所介绍,Vim命令 'a (单引号加一个标记a) 会将光标跳转到a标记所在行的 行首 。而 a 命令会将光标跳转到标记所在行上被标记的列位置,即同时恢复行、列的位置。

nnoremap ' `      
nnoremap ` '


12. Vim搜索结果居中展示

nnoremap <silent> n nzz
nnoremap <silent> N Nzz
nnoremap <silent> * *zz
nnoremap <silent> # #zz
nnoremap <silent> g* g*zz

Vim普通模式下, z 命令用于屏幕重绘。 z. 命令使当前光标所在的行显示在窗口中部,且光标会移动到当前行的第一个非空白字符上;而 zz 会使当前光标所在的行显示在窗口中部,且保持光标所在列的位置不变。同时,在 Vim 普通模式下, n 命令表示跳转到下一个查找匹配项。

因此, nzz 表示把下一个查找匹配项所在的行显示在屏幕的最中间。

为了减少按键次数,同时不改变使用习惯,可以设置 Vim 普通模式下的按键映射: nnoremap <silent> n nzz ,实现按 n 键就可以将下一个查找匹配项所在的行显示在屏幕的最中间。

上述其他几个按键映射同理,不再赘述。可参考《 Vim搜索命令使用方法和技巧 》一文,了解 N 、 * 、 # 、`` 在 Vim 查找匹配下的作用。

注: silien 命令用于安静地执行命令,既不显示正常的消息,也不会把它加进消息历史,其格式为: :sil[ent][!] {command} 。如果有 [!] ,则表示还将跳过错误消息 (即时检测到错误时,Vim 命令和按键映射也不会被终止)。


13. 取消 Vim 查找高亮显示

noremap <silent><leader>/ :nohls<CR>

如《 Vim清除上次的搜索高亮 》一文介绍,Vim 命令行模式下执行 nohls 可取消高亮显示查找匹配结果。

如果 leader 键是默认的 \ ,那么在上述的按键映射下,Vim 普通模式下执行 \/ 等价于在 Vim 命令行模式下 执行 nohls 命令,可用于取消搜索结果高亮显示。


14. 进入Vim命令行模式/返回Vim普通模式

普通模式下,输入 : 可进入 Vim 的命令行模式。

考虑到按键便利性,可将 ; 映射为 : ,从而实现按 ; 键便可以从 Vim 普通模式进入命令行模式的效果。对应配置如下:

nnoremap ; :

在任何模式下,按 Esc 可返回到 Vim 普通模式。

同样出于按键便利性,可以在 Vim 的插入模式下,将 kj 映射为 Esc 键,实现按 kj 键退出插入模式,返回到普通模式的效果。对应配置如下:

inoremap kj <Esc>


15. Vim 保存没权限修改的文件

:w! 命令可实现强制保存文件 (即便该文件是只读文件)。但这个命令无法保存那些没修改权限的文件,如果中途强制退出,又容易丢失辛辛苦苦修改的内容。这时候,Vim 下可执行 shell 终端命令的功能便派上了大用场。《 Vim超级用户权限保存文件 》一文已经介绍过通过 :write !sudo tee % > /dev/null 命令,可实现使用超级用户权限保存文件。

通过下面的 Vim 按键映射,可以使用 :w!! 上述同样的效果。(当然,需要输入当前 Linux 用户的密码)。更多Vim命令和Vim配置,欢迎访问Vim教程网( https://vimjc.com )。

cmap w!! w !sudo tee >/dev/null %
《女程序员说》  

原文 https://vimjc.com/vim-commands-and-vim-mapping-conf.html

链接: https://fly63.com/article/detial/7063

kubernetes 命令方式 部署、访问应用

Kubernetes 命令的方式运行应用:默认情况下,所有Pod只能在集群内部访问,为了能够外部访问应用,需要将容器端口映射到节点的端口,15672 就是容器中端口。15672端口已经映射到了12732端口,端口号是随机分配的

node.js中使用yargs来处理命令行参数

yargs库能够方便的处理命令行参数。读取命令行参数argv 对象用来保存命令行参数,传递参数时,参数名以 -- 开头,中间使用 = 或 空格,然后接上值 。argv 有一个 下划线 属性,该属性用来获取非连词线开头的参数

Linux常用命令总汇

ls命令就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等

常用的搜索命令_高级搜索指令大全

作为一名资深SEO,不懂得搜索引擎高级指令的使用显然是说不过去的。搜索引擎高级指令就如同语言一样,用来建立搜索引擎与SEO人员直接沟通的“通道”,下面就为大家整理下常用的高级搜索命令

npm常用命令与操作

npm常用命令与操作:npm i/install moduleName安装模块;i是install的缩写,两者功能是一样的;npm ls 查看所有局部安装的模块; npm从5.0版本开始添加了package-lock.json文件(下称lock文件);用于保证再次安装模块时能安装同样的版本;

Linux常用命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令

每个Web开发者都该了解的12条命令行

在开发者的弹药箱里,命令行是最具生产力的工具之一。掌握它们可以给你的工作流程带来非常积极的影响。因为,许多日常任务都可以用一条命令然后按回车来解决。

FFmpeg常用命令合集

视频裁剪滤镜(播放器大小裁剪): ffmpeg -i killer.mp4 -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4;视频裁剪(按时间裁剪): ffmpeg -i shanguangshaonv.mp4 -ss

NodeJS 构建现代化的命令行工具

这是一篇关于如何使用 NodeJS 构建高性能、高可读性的现代化命令行工具的博客。每当我们想要创建一个基于 NodeJS 的命令行工具时,就会衍生出一堆问题需要解决,比如如何准备开发环境,如何打包转译代码

python常用命令

#查看django版本;创建一个项目mysite;在当前目录下启动manage.py;创建一个polls应用;在当前目录下针对models生成sql语句;根据生成的sql语句生成数据库

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!