资讯专栏INFORMATION COLUMN

VIM小技巧合集(持续更新)

ninefive / 1399人阅读

摘要:如果批量就更麻烦。不过这样设置会导致每次用鼠标选择一段文本都会自动进入模式,这样的话我们就没法复制到系统剪切板了。这时候,需要按住键然后再用鼠标选择文本,这样一来就不会启动模式,且可以复制到剪切板。鼠标支持问题高版本默认是支持鼠标滚动的。

Leader键

参考:http://learnvimscriptthehardw...

Vim的默认Leader前缀是键。
说白了,就是一个快捷命令的前缀。
一般比如cc,dd之类都被占用,映射起来不方便。所以加上前缀后,就可以追加各种自己喜欢的快捷命令了。

Vim注释的方法
Vim里面注释对初学者真是比较头疼的事情。需要先$跳到行头,i插入模式,输入注释,Esc退出插入模式。如果批量就更麻烦。下面是几种常用方法。

原生方法一

Ctrl+v进入Block选择,向下移动选择待注释行,Shift+i批量插入,输入注释符,按两次Esc退出,等几秒实现批量注释。

.vimrc配置文件法

.vimrc中加入如下语句:

" Commenting blocks of code.
autocmd FileType c,cpp,java,scala let b:comment_leader = "// "
autocmd FileType sh,ruby,python   let b:comment_leader = "# "
autocmd FileType conf,fstab       let b:comment_leader = "# "
autocmd FileType tex              let b:comment_leader = "% "
autocmd FileType mail             let b:comment_leader = "> "
autocmd FileType vim              let b:comment_leader = "" "
noremap  ,cc :silent s/^/=escape(b:comment_leader,"/")/:nohlsearch
noremap  ,cu :silent s/^V=escape(b:comment_leader,"/")//e:nohlsearch

然后注释的快捷键是,cc,取消注释是,cu

插件法

常用插件有NerdCommenter,在vimrc的插件位置中加入Plugin "scrooloose/nerdcommenter",重新打开vim后输入:PluginInstall后安装成功。
注释的快捷键是cc,反注释是cu。其实和自己直接在vimrc中写没什么太大区别。
其它注释插件大同小异,就不都说了。

Vim里Insert模式下不能按Backspace删除前面的内容

因为默认当前插入只能创建新内容,不允许改动别的东西。如果要变成Insert mode下随便编辑的模式,在~/.vimrc中加上:

set backspace=indent,eol,start

或者更简单的set backspace=2,效果一样。

Vim中Tab变Space等相关设置

Tab和Space之争和Vim于Emacs是一样等,我是Vim和Space派。但是我和大多数人一样喜欢按Tab出Space。
~/.vimrc中设置如下,重启vim就会生效:

set autoindent "换行时自动缩排 同时对应的还有其它两种模式 smartindent, cindent
set tabstop=4 "设定tab宽度为4个字符
set shiftwidth=4 "设定自动缩进为4个字符
set expandtab "用space替代tab的输入 取消的话 就用set noexpandtab "不用space替代tab的输入
retab "打开文件时自动转换所有tab为空格
Vim产生的.swp文件

参考文章:VIM不正常退出产生的swp文件
常用关于swp文件的命令或vimrc配置:

查看当前目录下的所有swp文件: vim -r

恢复文件:vim -r filename,上次意外退出没有保存的修改,就会覆盖文件。

停止vim产生交换文件:在~/.vimrc中加入set noswapfile

定时自动保存文件:

set updatetime=23000 " 设置每200个字符保存一次
set updatecount=400 " 设置每4秒保存一次
" set updatecount=0 " 不保存交换文件

设置交换文件默认目录:set directory=./tmp

Vim不会帮你自动保存当前文件,但是它会帮你创建一个缓存文件,一旦不正常退出或掉线,你能通过这个文件快速recover恢复过去。

恢复文件的命令:

# 如果是在vim内
:rec

# 如果是在vim外
vim -r FILENAME

参考:VIM不正常退出产生的swp文件

找到~/.vimrc加入这些内容可以设置缓存文件:

" ---- Swap files (for recovery) ----
set swapfile    "enable swap file
set updatetime=23000   "save swap file every amount of ms
set updatecount=20     "save swp file every amount of characters
set directory=/tmp    "set swp file directory. 
Vim自动运行(或编译运行)文件

不像SublimeRepl需要安装插件,Vim原生支持直接运行python等代码。只要输入命令:
:!python %
其它语言代码类似。
输入命令后,vim界面会暂时跳出编辑页面跳到终端页面显示执行过程,期间可以按任意键返回vim编辑页面。
输过一次后,就可以用:!!直接重复上次的命令,不用再输一遍命令。

为什么Vim左下角总显示"recording"

这是因为不小心按到了q键,进入了录制宏模式。
再按以下q就退出了。

Vim支持鼠标滚动界面

Mac下,Vim支持鼠标滚动光标,通过光标移动上下翻动页面。但是这样太别扭了,我们需要的是滚轮控制界面滚动,如vim中ctrl+e一样的效果。
简单:~/.vimrc中加一句set mouse=a即可。
不过这样设置会导致每次用鼠标选择一段文本都会自动进入visual模式,这样的话我们就没法复制到系统剪切板了。
网上说mouse后一个-好即可,如set mouse-=a,但是试过没用。
这时候,需要按住Alt键然后再用鼠标选择文本,这样一来就不会启动v模式,且可以复制到剪切板。

Vim里批量查找替换文字

没有一般编辑器按快捷键那么方便,需要以输入一条命令的方式才能执行。
格式如下:

对当前行执行替换 :s/查找内容/替换内容/g

在全文执行替换 :%s/查找内容/替换内容/g

对选中行中内容进行批量替换 用v模式选中行然后s/查找内容/替换内容/g

大概可以看到,s代表执行search命令,%代表全文执行,/是相当于分隔符,g代表global对指定范围内所有结果进行替换,如果没有g那么只替换第一个找到的结果。

Vim 文件操作

参考:在 Vim 中进行文件目录操作

# 新建文件/打开文件
: e [FILE-NAME]

# 新建文件 (只打开半个窗口 另半个窗口保留之前的文件)
:new [FILE-NAME]

# 退出 (如果文件更改则保存)
:x 
打开目录
:e FOLDER-PATH    " 编辑该目录
:Explore .      " 浏览该目录
:Sexplore .     " 在水平分割窗口中浏览该目录
:Vexplore .     " 在垂直分割窗口中浏览该目录
调用bash命令
# 列出文件
:!ls

# 删除文件
:!rm foo.txt
Vim Recording 录制动作并重复

我不是很喜欢这个词,很简单的东西把它弄复杂了。

Vim记录你的一系列动作很简单,关键字是q。记录并重复一系列的动作,只要这样做:

q{0-9a-zA-Z}中任意一个字,比如q1,开始记录动作。

状态栏显示:recording @1

开始做一系列的动作,改词,删字,等等。

q,结束当前的记录。

@1,重现刚才记录的动作。

Vim鼠标支持问题

Vim高版本默认是支持鼠标滚动的。但是在Tmux中就不可以。

这样可以通过在~/.vimrc中设置set mouse=a来达到开启鼠标支持的左右。
a模式为all,即鼠标的"完全支持模式": 在所有情况下都支持鼠标,包括鼠标定位到某行,定位到某个单词,双击选择单词,三击选择整行,甚至在tmux中也一样。

但是set mouse=a有一个缺点不好解决就是:鼠标选择文字的话,会默认进入Visual模式。

Mac安装带lua、python支持带VIM
brew install vim --with-cscope --with-python --with-lua --override-system-vim
vimrc导入另一个文件

VIM也有source语法,可以用来导入文件:

source ~/.vimrc-keymappings
VIM跳到函数/类定义处

内置:gd

在调用处按gd即可跳转到函数定义处。

需要配合ctags

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25085.html

相关文章

  • VIM插件合集持续更新

    摘要:它的名字其实是的组合。然后就会跳转到插件安装界面,并自动下载安装上面列出来的插件。删除插件直接在里把的那一行删除,然后在里运行即可,然后将下该插件的目录删除。的插件官方链接。这个插件是可以像一样快捷多选文本的插件。 Vim 安装插件管理器Vundle 安装插件前,一般都会用到Vundle这个插件包管理器。它的名字其实是Vim bundle的组合。安装方法可以参考官网,说的很详细。简单说...

    guqiu 评论0 收藏0
  • VIM问题合集持续更新

    摘要:在模式下粘贴速度很慢的问题一般当我们在模式下粘贴一段超大量的文本,比如行。更新后无法打开问题很久不使用安装东西,安装了一个小软件,结果直接更新到版本,然后导致完全无法打开。 Vim 在Insert模式下粘贴速度很慢的问题 一般当我们在Insert模式下粘贴一段超大量的文本,比如1000行。那么Vim会变得奇慢无比,大概半分钟? 所以,如果我们要粘贴文本,需要用另一种方法:在Normal...

    RyanHoo 评论0 收藏0
  • VIM替代插件的原生功能合集持续更新

    摘要:搜索过程中才发现其实是自带补全功能的,称为。输代码的过程中,直接按然后再按,就会弹出猜测的一系列补全内容。经过测试,原生支持很多种语言。 How to Do 90% of What Plugins Do (With Just Vim) This collection is inspired by the youtube video: How to Do 90% of What Plug...

    468122151 评论0 收藏0
  • 技巧 - 收藏集 - 掘金

    摘要:然而学习布局,你只要学习几个手机端页面自适应解决方案布局进阶版附源码示例前端掘金一年前笔者写了一篇手机端页面自适应解决方案布局,意外受到很多朋友的关注和喜欢。 十分钟学会 Fiddler - 后端 - 掘金一.Fiddler介绍 Fiddler是一个http抓包改包工具,fiddle英文中有欺骗、伪造之意,与wireshark相比它更轻量级,上手简单,因为只能抓http和https数据...

    A Loity 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<