没有哪种教育能及得上逆境 [登录·注册]

吕滔博客

首页 开发 运维 工具 摄影

折腾macOS下的vim配置

工具 memory 发布于September 18, 2017 标签: mac, Vim

平时用Vim基本上也就是在服务器上编辑配置文件.
最近到了新公司,发现同事们都用的是vim[好牛逼是不是],哈哈.
自己平时用ide习惯了,突然想,要不也试试本地的,反正是折腾.记录一下吧

Vim语法高亮设置

只需要找到vimrc配置文件就行,在终端输入下面的指令,就可以打开配置文件

cp /usr/share/vim/vimrc ~/.vimrc
~/.vimrc

然后在末尾加上

syntax on
set nu!
set autoindent

分别是语法高亮、行号、自动缩进.
保存下,再开vim发现就已经变样了.好easy是不是.

给些参数的参考

set hlsearch "高亮度反白 
set backspace=2 "可随时用倒退键删除 
set autoindent "自动缩排 
set ruler "可显示最后一行的状态 
set showmode "左下角那一行的状态 
set nu "可以在每一行的最前面显示行号 
set bg=dark "显示不同的底色色调 
syntax on "进行语法检验,颜色显示 
set wrap "自动折行 
set shiftwidth=4 
set tabstop=4 
set softtabstop=4 
set expandtab "将tab替换为相应数量空格 
set smartindent

下面可根据自己的需要,可以不选用

set guifont=Dorid Sans Mono:h14:uft8 "gvim字体设置 
set encoding=utf8 "设置内部编码为utf8 
set fileencoding=utf8 "当前编辑的文件编码 
set fileencodings=uft8-bom,utf8,gbk,gb2312,big5 "打开支持编码的文件

"解决consle输出乱码 
language messages zh_CN.utf-8 
"解决菜单乱码 
source VIMRUNTIME/delmenu.vimsourceVIMRUNTIME/menu.vim

我们继续折腾

vim主题配色

上面的样子是不是感觉好丑.
打开官网,据说wombat256这个主题不错.我们从官网捞下来 https://vim.sourceforge.io/scripts/script.php?script_id=2465
下载了一个wombat256.vim文件,放到~/.vim/colors/目录下.别告诉我你没这目录,自己想办法...
然后我们再来改改上面那个配置文件.vimrc再加上

colorscheme wombat256

再试试.其实我个人感觉wombat256mod比wombat256好看多了.哈哈
好了,再次打开你会发现样式变了...

安装插件

安装PHPcomplete插件

如果是VIM7.0以上,不需要再下载phpcomplete.vim这个插件,因为安装时自带了,在目录/usr/share/vim/vim74/autoload/phpcomplete.vim中。
~/.vimrc中添加这样两行:
``
filetype plugin on
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
``
如何使用?我也不会用好不好...只知道这货自带了...

快捷键

vim的键映射map,它有五种前缀,对应着vim中的五种模式:

nore前缀: 非递归

n前缀:    在普通模式下生效

v前缀:    在可视模式下生效

i前缀:     在插入模式下生效

c前缀:    在EX命令模式下生效

通过不同的前缀,就能明确告诉vim,我们自定义的快捷键在哪种模式下生效。

除此之外,还要配合键表:

<k0>-<k9>       小键盘数字0到9
<S-x>                大写S配合x,意味着shift+x组合键
<C-x>               大写C配合x,意味着ctrl+x组合键
<A-x>               大写A配合x,意味着alt+x组合键
<ESC>               ESC键
<BS>                backspace退格键
<CR>                ENTER回车键
<Space>           空格键
<Shift>             shift键
<Ctrl>               ctrl键
<Alt>                alt键
<F1>-<F12>    F1到F12功能键

尽管能映射的键表非常丰富,但因为某些历史原因,ALT几乎无法映射。
同时CTRL键被linux系统频繁使用,F1到F12功能键某些也被vim占用。
比如F1是帮助,这些都不适合用来映射,以免造成快捷键冲突。

~/.vimrc配置文件属于文本文件,我们用vim打开,把以下的修改写入vimrc,完成后千万不要忘记保存退出。

光标移动映射

无数的初学者都被vim反人类的h,j,k,l光标移动折磨,所以个人把它修改成更符合习惯的j,k,l,i
i本身属于插入模式开关,映射后被占用了,以后只能使用a来切换插入模式。

"映射上下左右的光标移动
nnoremap  i   k
nnoremap  k  j
nnoremap  j   h

使用前缀nore,表明不递归,否则按下i就等于按下k,就等于按下j,最后结果乱套。

vim自带的行光标移动也不方便,移动到行首^,需要按shift+6,移动到行尾$,需要按shift+4。
个人也把它们进行映射:

"行光标移动
nmap lh   ^
nmap le   $

连续按下lh就表明移动到行首,lh可以理解成line_head,le理解成line_end。

功能键映射

vim的映射不仅能提供单个按键,也能提供一系列按键操作映射,类似于宏操作。
这时候可能许多初学者跟我一样,迫切的想把保存文件功能,映射成Windows下的ctrl+s

imap <C+s> <ESC>:w<CR>a 

用imap表明插入模式下有效 , 后面的<ESC>:w <CR>a 作为整体看待。
事实上这样映射后,按ctrl+s会发现vim“定住”了,按什么键屏幕上都没反映,最后只能强行关闭。
为什么呢?这是因为ctrl+x的组合键,不少被linux系统占用了,ctrl+s是暂停功能。
而操作系统的优先级更高,当我们按下ctrl+s的时候,它会首先执行操作系统的功能。要退出ctrl+s暂停状态,按下ctrl+q恢复。
所以前面说,尽管键表映射非常丰富,但实际上并非不受限制的随意映射。
我们改换下思路,可以这样做:

"文件保存与退出
nmap fw     :w<CR>
nmap fq     :q<CR>
nmap fwq    :wq<CR>

在普通模式,快速按下fw,就相当于输入了:w<CR>,fw可以理解成file_write。
我们可能需要频繁变更 .vimrc,要让变更内容生效,一般的做法是先保存 .vimrc 再重启 vim,太繁琐了。
增加如下设置,可以实现在保存 .vimrc 时自动重启加载它。

" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC

<leader>前缀键

vim自带的快捷键很多,再加上各类插件提供的快捷键,我们自己定义的快捷键,这些混合在一起,非常容易引起按键的冲突,为了环境该问题,vim引入了<leader>前缀键。
前缀键的意思就是,在各种快捷键的最前面加上<leader>,避免了二义性。
比如我们定义<leader>是#号:

let mapleader="#"  

配合键盘映射:

nmap <leader>w    :w<CR>  

在普通模式按下#w时,就完成了文件的保存工作。
选用的<leader>应该容易输入,不会和现有快捷键符号发生冲突,造成二义性。
发挥想象,实现简单的模版:

let mapleader="\"  
imap <leader>if   if () <CR>{};  
imap <leader>main  int main()<CR>{<CR> return 0;<CR>}  

不同模式下的键盘映射

使用:map!命令,则只列出插入和命令行模式的映射。而:imap,:vmap,:omap,:nmap命令则只是列出相应模式下的映射。

其它的再说...自己开发还是习惯ide.哈哈

Nerdtree一些相关快捷键

t 在标签页中打开
gT 切换到前一个tab
g t 切换到后一个tab
crtl+w 多次切换工作区与目录

p 到上层目录
P 到根目录
?显示帮助

相关推荐

添加新评论

网站状态

  • 栏目分类:49个
  • 发布文章:1541篇
  • 用户评论:787条
  • 开博至今:4191天

正则速查

[abc] 匹配中括号中的单个字符,如a或b或c
[^abc] 匹配除了a、b、c等字符的其他单个字符
[a-z] 匹配一个字符范围,如a到z
[a-zA-Z] 匹配一个字符范围,如a-z 或 A-Z
^ 匹配行的开始
$ 匹配行的结束
\A 匹配一个字符串的开始
\z 匹配一个字符串的结束
. 匹配任意单个字符
\s 匹配空白字符,如空格,TAB
\S 匹配非空白字符
\d 匹配一个数字
\D 匹配非数字
\w 匹配一个字母
\W 匹配非字母
\b 匹配字符边界
(...) 引用所有括号中的内容
(a|b) a或者b
a? 零个或1个a
a* 零个或多个a
a+ 1个或多个a
a{3} 3次重复的a
a{3,} 3次或3次以上重复的a
a{3,6} 3到6次重复的a

修正符

/g 查找所有可能的匹配
/i 不区分大小写
/m 多行匹配
/s 单行匹配
/x 忽略空白模式
/e 可执行模式,PHP专有
/A 强制从目标字符串开头匹配
/D 使用$限制结尾字符,则不允许结尾有换行
/U 只匹配最近的一个字符串;不重复匹配

最新回复

  • memory: 这是测试,不建议正式环境这样使。
  • 广州网站建设: 构建redis集群时候,不要使用生产环境
  • memory: 照着大差不着的改一下就成了rewrite ^/sort/([0-...
  • mage: 按照上面设置的伪静态url是类似这种形式的 /listinfo-...
  • mage: 比如这种URL:帝国7.5伪静态如何可以做到这种形式(拼音或者英...
  • memory: 额,难住我了,哈哈。我项目中没有用过这么复杂的。
  • 马哥: 请问如何设置目录名是拼音,然后文章页在目录下面的伪静态
  • memory: conf文件中location段加上规则就可以了呀。然后relo...
  • mage: 后台系统设置,设置好了。规则应该怎么处理,nginx的服务器
  • 葛一速: 这个函数很实用,谢谢分享
  • memory: 这个是layui1.x中的,我项目中就是这样用的。如果你没理解,...
  • 李帅: 你会不会的 发这个糊弄人
  • memory: 升级完之后,测试无误后再删旧的~~~
  • 广州网站建设: 升级之前用不用先删了内核
  • memory: 没测试过...
  • 欧文斯: 对于多个 IP 段呢?比如超过 1000 个 IP 段,匹配速度...
  • 广州网站建设: 了解了,博客的通配符HTTPS证书