vim基本设置

vim基本配置:包括tab键替换成4个空格

Edit Vim configuration file ".vimrc" in your HOME directory, add below lines:

[plain] view plaincopy
  1. set et  
  2. set ci  
  3. set sw=4  
  4. set ts=4  

 After new setting take effect, each time you press TAB key, it will automatically replaced by 4 SPACE and do indentation.

You can still insert real Tabs as [Ctrl]-V [Tab].

If you open an unwell indentation source code file, you can press "gg=G", all TABs will be replaced by 4 SPACE. 

        在使用vim编辑器的时候  很多系统里默认的vim tapstop是8,而很多时候我们需要的tapstop是4,比如在写python的时候,我们都知道python严重依赖缩进,所以tapstop是8的话 ,这个脚本比较大的时候那就相当的不好看了,所以在这种情况下修改tapstop为4还是很有必要的。

        怎么设置这个东东呢?很简单  打开/etc/vimrc 加入类似这样的内容就可以了:

set tabstop=4

或者

set  ts=4

        然后你再用vim编辑个文件并按tab试试,就会感觉到明显的不一样。

但是问题又来了,在python脚本里,如果缩进使用tab那么就不再推荐在同一脚本里使用其他的符号来缩进,因为这很有可能导致诸多兼容性问题,比如你既使用了tab又在某些地方使用了空格来缩进,额,恭喜你,你很有可能会遇到无法执行此脚本的错误。

这个时候怎么办呢?最显而易见的方法只有一个,那就是统一使用相同的缩进方法,该是做出艰难的选择的时候了:要么用tab  要么用空格 。而很多经常使用python的同学可能会发现使用空格缩进比tab来缩进似乎更加明智,因此也极力推荐统一使用空格,这是为什么呢?当你vim编辑一个文件的时候,你能一眼就看出缩进使用的是tab吗?最有可能发生的是把tab当成了空格而不是把空格看成tab。为了避免这样的困扰,统一使用空格看起来是更好的选择。

        现在你再打开vim,按下tab,再按backspace,你会发现tab出来的缩进只需要backspace一次就能删除,这足以说明这段空白是tab;然后你再次修改vimrc,并加入:

set expandtab

set et

再次打开vim,你会发现tab出来的空白已经变成空格了,而这个时候一个tab就真正成为4个空格了,而不仅仅是4个空格的缩进距离。这才是我们真正想要的。

那么如果你编辑了一个文件并且想要在别人修改这个文件的时候不会出现类似的疑问怎么办呢?方法有两个,一个是你告诉他,你使用的是空格还是tab,另一个方法是使用vim的modeline,当别人打开这个文件的时候会自动使用相同的配置。什么是modeline呢?就是往文件里面写入特定的行,当vim打开这个文件的时候会自动读取这一行的参数配置并调整自己的设置到这个配置,例如你可能经常会看到在有些源码的文件末尾会出现这样的行:

# vim:et:ts=4:sw=4:

这个就是modeline。当其他人的vimrc里打开了set modeline的时候,就会自动读入这个配置。

更多的信息请参考vim :help auto-setting  和:help modeline

[plain] view plaincopy
  1. set nocompatible "关闭vi兼容  
  2. set enc=utf-8  
  3. "set number "显示行号  
  4. filetype plugin on "文件类型  
  5. set history=500 "历史命令  
  6. syntax on "语法高亮  
  7. "set autoindent "ai 自动缩进  
  8. "set smartindent "智能缩进  
  9. set showmatch "括号匹配  
  10. set ruler "右下角显示光标状态行  
  11. set nohls "关闭匹配的高亮显示  
  12. set incsearch "设置快速搜索  
  13. set foldenable "开启代码折叠  
  14. "set fdm=manual "手动折叠  
  15. set foldmethod=syntax "自动语法折叠  
  16. set modeline "自动载入模式行  
  17. "自动插入modeline  
  18. func! AppendModeline()  
  19. let l:modeline = printf(" vim: set ts=%d sw=%d tw=%d :",  
  20. \ &tabstop, &shiftwidth, &textwidth)  
  21. let l:modeline = substitute(&commentstring, "%s", l:modeline, "")  
  22. call append(line("$"), l:modeline)  
  23. endfunc  
  24. "按\ml,自动插入modeline  
  25. nnoremap <silent> <Leader>ml :call AppendModeline()<CR>  
  26. "空格展开折叠  
  27. nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>  
  28.   
  29. "set tabstop=4  
  30. "set shiftwidth=4  
  31. set ts=4  
  32. set sw=4  
  33. set expandtab  
  34. "自动tab  
  35.   
  36.    
  37.   
  38. if has("autocmd")  
  39. filetype plugin indent on  
  40. endif  
  41. autocmd filetype python setlocal et sta sw=4 sts=4  
  42.   
  43.   
  44. "根据文件类型自动插入文件头  
  45. autocmd BufNewFile *.py,*.sh exec ":call SetTitle()"  
  46. func SetTitle()  
  47. if &filetype == 'sh'  
  48. call setline(1, "\#!/bin/bash")  
  49. call append(line("."), "\# Author:itxx00@gmail.com")  
  50. call append(line(".")+1, "")  
  51. else  
  52. call setline(1, "\#!/bin/env python")  
  53. call append(line("."), "\#coding:utf-8")  
  54. call append(line(".")+1, "\#Author:itxx00@gmail.com")  
  55. call append(line(".")+2, "")  
  56. endif  
  57. endfunc   
  58. "新建文件后自动定位至文件末尾  
  59. autocmd BufNewFile * normal G  
  60. "F2去空行  
  61. nnoremap <F2> :g/^\s*$/d<CR>  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在JPA和JDBC中使用存储过程。 嗯,只要使用jOOQ

Java杂志的当前版本由Josh Juneau撰写了有关JDBC和JPA的大数据最佳实践的文章&#xff1a; http : //www.javamagazine.mozaicreader.com/MayJune2016 本文介绍了如何在JDBC中使用存储过程&#xff08;不幸的是&#xff0c;请注意如何关闭资源。即使在Java Magazine的文章中&a…

java hash sha256_Sha256加密

package com.zq.utils.encryption;import java.util.Random;import org.apache.shiro.crypto.hash.Sha256Hash;import com.zq.utils.string.StringUtils;/**** Created by MyEclipse. Author: ChenBin E-mail: chenb8000056.com Date:* 2016-5-23 Time: 下午3:10:37 Company: H…

怎样花两年时间去面试一个人

Joel Spolsky曾经感叹&#xff1a;招聘难&#xff0c;难于上青天&#xff08;此处笔者稍加演绎:)&#xff09;。他有两个辛辣但不乏洞察力的断言&#xff1a;真正的牛人也许一辈子就投大概4次简历&#xff0c;这些家伙一毕业就被好公司抢走了&#xff0c;并且他们的雇主会给他们…

非网络引用element-ui css导致图标无法正常显示的解决办法

https://blog.csdn.net/m0_37893932/article/details/79460652 ******************************************** 前言 官方推荐的css及js引用方式如下: <!-- 引入样式 --> <link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/in…

Java EE与Java SE:Oracle是否放弃了企业软件?

Java Enterprise Edition是全球Java社区中最大的困惑来源之一。 就像《星球大战》和《星际迷航 》之间的区别一样&#xff0c;对于“原力觉醒”是他们在这部电影中看过的第一部电影的人来说。 奇怪的是&#xff0c;即使您有使用EE进行开发的经验&#xff0c;但整个情况通常仍然…

约瑟夫环

约瑟夫环是一个数学的应用问题&#xff1a;已知n个人&#xff08;以编号1&#xff0c;2&#xff0c;3...n分别表示&#xff09;围坐在一张圆桌周围。从编号为k的人开始报数&#xff0c;数到m的那个人出列&#xff1b;他的下一个人又从1开始报数&#xff0c;数到m的那个人又出列…

java链表的数据结构_Java数据结构 获取链表(LinkedList)的第一个和最后一个元素

Java数据结构 获取链表(LinkedList)的第一个和最后一个元素以下实例演示了如何使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlistname.getLast() 来获取链表的第一个和最后一个元素&#xff1a;Main.java 文件import java.util.LinkedList;public class Main {pub…

第二章:表单和模板

在第一章中&#xff0c;我们学习了使用Tornado创建一个Web应用的基础知识。包括处理函数、HTTP方法以及Tornado框架的总体结构。在这章中&#xff0c;我们将学习一些你在创建Web应用时经常会用到的更强大的功能。 和大多数Web框架一样&#xff0c;Tornado的一个重要目标就是帮助…

C语言main()函数详解

C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数&#xff0c;一个C程序总是从main()函数开始执行的。一、main()函数的形式 在最新的 C99 标准中&#xff0c;只有以下两种定义方式是正确的&#xff1a;int main( void ) /* 无参数形式 */{...return 0;}int ma…

json套json_JSON –拯救杰克逊

json套json有时&#xff0c;您必须使用JavaScript从服务器中获取一些数据&#xff0c; JSON是完成此任务的不错选择。 让我们玩一下JPA揭秘&#xff08;第1集&#xff09;-OneToMany和ManyToOne映射中的Employer – Employee – Benefit示例。 我们将在基于Spring Framework的…

[洛谷P1951]收费站_NOI导刊2009提高(2)

题目大意&#xff1a;有一张$n$个点$m$条边的图&#xff0c;每个点有一个权值$w_i$&#xff0c;有边权&#xff0c;询问从$S$到$T$的路径中&#xff0c;边权和小于$s$&#xff0c;且$\max\limits_{路径经过k}\{w_i\}$最小&#xff0c;输出这个最小值&#xff0c;若到达不了&…

yii mysql 主从_mysql主从同步实践 YII

1、两台服务器互联master、slave 2、master配置&#xff1a; server-id 1 master端ID号 log-bin/data/logbin/mysql-bin 日志路径及文件名 #binlog-do-db cacti 同步cacti&#xff0c;此处关闭的话&#xff0c;就是除不允许的&#xff0c;其它的库均同步。 binlog-ignore-db …

性能与可靠性:Java应用为何像F1汽车

再想一想。 性能和可靠性相关吗&#xff1f; 还是这些东西相互排斥&#xff1f; 我认为是后者。 如今&#xff0c;现实是IT部门将应用程序的性能和可靠性视为同一事物&#xff0c;但这离事实还差得远。 让我们看看一级方程式车队如何管理性能和可靠性。 上赛季迈凯轮本田车队…

BZOJ[1051]受欢迎的牛

Description 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛&#xff0c;给你M对整数(A,B)&#xff0c;表示牛A认为牛B受欢迎。 这种关系是具有传递性的&#xff0c;如果A认为B受欢迎&#xff0c;B认为C受欢迎&#xff0c;那么牛A也认为牛C受欢迎。你的任务是求出有多少…

C语言文件操作函数大全

clearerr&#xff08;清除文件流的错误旗标&#xff09; 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 clearerr&#xff08;&#xff09;清除参数stream指定的文件流所使用的错误旗标。 返回值   fclose&#xff…

java模拟网易邮箱登录_求赐教:网易邮箱Web端模拟登录看信的加密参数_ntes_nnid、_ntes_nuid...

网易邮箱的模拟登录和收信都非常简单&#xff0c;在阅读邮件的时候需要两个参数&#xff1a;_ntes_nnid 和 _ntes_nuid_ntes_nnid21533f97b25070a31c249f59513ad20c,1492592485123_ntes_nuid21533f97b25070a31c249f59513ad20c32位的&#xff0c;看着像MD5加密。还请各位大神不吝…

18.8.20 考试总结

铁塔(tower.pas/c/cpp)题目描述Rainbow 和Freda 要在Poetic Island 市的一座山脚下盖房子定居了……盖房子需要钢材 &#xff0c;幸运的是&#xff0c;这里有排成一行的n 座废弃的铁塔&#xff0c;从左到右编号为1~n&#xff0c;其中第i 座的高度为h[i]。 Rainbow 和Freda 想盖…

va_start、va_end、va_list的使用

1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表 void foo(...); void foo(parm_list,...); 2:函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈.eg: #include <iostream> void fun(int a, ...) { int *temp &a; temp; f…

java 根据时间范围自动算间隔_Java根据开始时间结束时间计算时间间隔 x年x月x日...

最近项目中有这样的需求&#xff1a;根据租赁开始时间租赁结束时间计算租期x年x月x日&#xff0c;相同的需求还有根据出生日期计算年龄等等......例如&#xff1a;开始日期 2020年7月24日 结束日期 2021年9月3日 租期 1年1月11日&#xff1b;开始日期 2020年7月24日 结束日期…

会java的鸭子_鸭子在Java中打字? 好吧,不完全是

会java的鸭子根据维基百科&#xff0c;鸭子的打字是&#xff1a; 动态类型的类型&#xff0c;其中对象的方法和属性确定有效的语义&#xff0c;而不是其从特定类或特定接口的实现继承 用简单的话 当我看到一只鸟走路像鸭子&#xff0c;游泳像鸭子&#xff0c;嘎嘎像鸭子一样时…