gvim下载地址:
https://github.com/vim/vim-win32-installer/releases
https://download.csdn.net/download/zwhfyy/11193500
文本编辑工具对于一个程序员来说至关重要,那就是刺客身上的背包。请注意不是刀或者剑,IDE才是。但是这个背包至关重要。
为啥用gvim呢?免费,开源,这都不是最重要的,关键是足够强大,背景足够深,这里是指咱们不可避免和linux打交道,在那里面也能用上;我最欣赏他的是可以轻松打开2G多的文本文件,这不是一般文本编辑工具,能做到的。额,说的有点多了,重点是我打算好好研究下这个背包,把吃的喝的,用的到的都放进去,下一步咱们先找找拉锁在哪里。
-
第一个文件,打开UTF-8格式的日志文件,这大哥显示乱码。(一顿倒腾)
打开gVim,并导航到菜单 “编辑”->“启动设定” 处
添加一行代码 set fileencodings=utf-8,cp936 ,然后保存
重新打开乱码没了,81难的第一难就算是过了。
-
第二个问题,必须要使用鼠标右键点击使用gvim直接打开文件才够方便
第一步:
删掉注册表中的HKEY_CLASSES_ROOT//shellex/ContextMenuHandlers/gvim*
第二步:
注册表下,HKEY_CLASSES_ROOT/*/shell下添加项,命名为"用vim编辑", 再对"用vim编辑"右键,新建项,命名为"command",在"command"的右边窗口第一个文件(也是唯一一个),将其数值数据设定为""D:\\gvim_8.1.1364_x64\\vim\\vim81\\gvim.exe" -p --remote-tab-silent "%1",其中数值数据包括双引号;上面的数值名称不用修改,点击确定可以退出。
-
第三个问题,不支持Ctrl+C Ctrl+V Ctrl+A Ctrl+Z ,没这几个快捷键的编辑器那就不叫编辑器,必须要支持
用户home目录下的 _vimrc文件添加这一段
source $VIMRUNTIME/mswin.vim
behave mswin
-
Json对象格式化
用户home目录下的 _vimrc文件添加这一段
command! Json :execute '%!python -m json.tool'
\ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)), sys.stdin.read()))"'
\ | :%s/ \+$//ge
\ | :set ft=javascript
\ | :1
下载 python-3.7.3-embed-amd64 到电脑上,并且把这个目录添加到path上,确保python命令可用
Python下载地址:https://www.python.org/downloads/
-
下面开始尝试把查找到的内容所在行都复制出来
越来越有趣了:
:let @a=""
:g/totalCost/y A
:put a
第一步声明个变量
第二步复制所有totalCost 所在行
第三部新建个文件把查找到的行都复制出来
-
关于在vim中的查找和替换
1,查找
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
Vim查找支持正则表达式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim$"。
2,大小写敏感查找
在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:
/foo\c
将会查找所有的"foo","FOO","Foo"等字符串。
3,大小写敏感配置
Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:
" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase
将上述设置粘贴到你的~/.vimrc,重新打开Vim即可生效
4,查找当前单词
在normal模式下按下*即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。例如当前为foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。 这在查找函数名、变量名时非常有用。
按下g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即foo bar和foobar中的foo均可被匹配到。
5,查找与替换
:s(substitute)命令用来查找和替换字符串。语法如下:
:{作用范围}s/{目标}/{替换}/{替换标志}
例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)
6,作用范围
作用范围分为当前行、全文、选区等等。
当前行:
:s/foo/bar/g
全文:
:%s/foo/bar/g
选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>。
:'<,'>s/foo/bar/g
2-11行:
:5,12s/foo/bar/g
当前行.与接下来两行+2:
:.,+2s/foo/bar/g
替换标志
上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:
空替换标志表示只替换从光标位置开始,目标的第一次出现:
:%s/foo/bar
i表示大小写不敏感查找,I表示大小写敏感:
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:
:%s/foo/bar/gc
回车后Vim会将光标移动到每一次"foo"出现的位置,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E与^Y是光标移动快捷键,参考: Vim中如何快速进行光标移
不换行命令 set nowrap
大小写敏感查找
在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:
/foo\c
将会查找所有的"foo","FOO","Foo"等字符串。
_vmrc配置文件 关于主题,我喜欢亮色的,背景是白色的,所以我选择了 zellner
set fileencodings=utf-8,cp936
command! Json :execute '%!python -m json.tool'
\ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)), sys.stdin.read()))"'
\ | :%s/ \+$//ge
\ | :set ft=javascript
\ | :1
" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase
"设置标签栏的显示,0永远不显示 1两个以上显示 2 永远显示
set showtabline=2
set number
"语法高亮
syntax enable
syntax on
color zellner
"实现Alt+数字 页签切换
:nn <M-1> 1gt
:nn <M-2> 2gt
:nn <M-3> 3gt
:nn <M-4> 4gt
:nn <M-5> 5gt
:nn <M-6> 6gt
:nn <M-7> 7gt
:nn <M-8> 8gt
:nn <M-9> 9gt
:nn <M-0> :tablast<CR>
"set go=
set scrolloff=5 " 设定光标离窗口上下边界 5 行时窗口自动滚动
set ruler " 打开状态栏标尺
set nocompatible " 设定 gvim 运行在增强模式下
set incsearch " 输入搜索内容时就显示搜索结果
set mouse=a " 设定在任何模式下鼠标都可用
set backspace=indent,eol,start "启用backspace delete等
set shortmess=atI "其中 I 表示启动时不显示 intro message 就是乌干达那句话
source $VIMRUNTIME/mswin.vim
behave mswin
let g:winManagerWindowLayout='FileExplorer'
nmap wm :WMToggle<cr>
if has("win32")
set guifont=Courier_New:h10:cANSI
endif
-
正则表达式
:g/^\s*$/d 删除只有空白的行
:%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。
^M 注意要用 Ctrl + V Ctrl + M 来输入
-
常用快捷键
撤销:u
恢复撤销:Ctrl + r
撤销:命令模式 u 插入模式 ctrl + z
保存退出:Ctrl+w+q 或者 ZZ
A行尾编辑
I行首编辑
o 操作,将在光标所在行下面另起新行,并将光标移到新行处,处于编辑模式
O 操作,将光标所在行上面另起新行,并将光标移到新行处,处于编辑模式
i 操作,光标将跑到该字符前 insert
a 操作,光标将跑到该字符后 append
w 光标一次往后移动一个单词的位置,光标定位在单词首部,可以结合数字使用
b 光标一次往前移动一个单词的位置,光标定位在单词首部,可以结合数字使用
e 光标一次往后移动一个单词的位置,光标定位在单词尾部,可以结合数字使用
G 移动光标到文件末尾,和数字结合使用,如33G,移动光标到第33行gg 移动光标到文件开头
`` 移动光标到前一个位置
H home,移动光标到文件开始位置
M Middle 移动光标到文件中部
L last 移动光标到文件末尾
ctrl+G 文件底部会出现文件信息:文件位置,权限,行数,所占百分比
zz 使当前行成为可视窗口中心
zt 使当前行成为可视窗口顶部
zb 使当前行成为可视窗口底部
[[或者gg跳转行头
]]或者shift+g 跳转行尾
v可视化模式,可以从当前行开始选择
Ctrl+v 列选择模式
全部选择
gg 移动到第一行
v 视图模式
G 移动到最后一行
o跳转到选择区的最前面或者最后面
删除文件所有内容:
gg
dG
格式化代码
非编辑模式,自动对齐:(gg=G)
1,gg 跳转到第一行
2,shift+v 转到可视模式
3,shift+g 全选
4,按下神奇的 =
你会惊奇的发现代码自动缩进了,也可能崩溃了。