目录

2.1. VIM
2.1.1. New text file line delimiter2.1.2. vim中的出现^M2.1.3. tab 符2.1.4. 粘贴是禁用格式化功能2.1.5. Regular Expressions
2.1.5.1. search & replace2.1.5.2. 会去掉vim文件中的空白行
2.1.6. 大小写转换2.1.7. split2.1.8. vimrc2.1.9. vimdiff - edit two or three versions of a file with Vim and show differences
2.1.9.1. 光标移动2.1.9.2. 文件合并2.1.9.3. 上下文2.1.9.4. 保存于退出
2.1.10. vim backup script
2.2. Eclipse
2.2.1. AnyEdit2.2.2. Eclim2.2.3. Vrapper
2.3. Komodo Edit2.4. Syntext Serna Free2.5. SciTE
  • vi

    vi file

  • emacs

    emacs

  • nano/pico

    nano file / pico file

  • joe

    joe file

    sudo apt-get install joe

2.1. VIM

Vi IMproved - enhanced vi editor (transitional package)

sudo apt-get install vim-perl vim-python vim-latexsuite

2.1.1. New text file line delimiter

:set ff
:set ff=dos
:set ff=unix
:set ff=mac

2.1.2. vim中的出现^M

sudo apt-get install tofrodos
dos2unix

输入

:set notextmode       

2.1.3. tab 符

set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker

2.1.4. 粘贴是禁用格式化功能

:set paste

2.1.5. Regular Expressions

2.1.5.1. search & replace

%s/neo/leo/g
%s#/logs#/www#g

2.1.5.2. 会去掉vim文件中的空白行

:%s/^\s*\n/

2.1.6. 大小写转换

将光标移动到想要大小写转换的地方然后键入

guw (大写转换成小写)

gUw (小写转换成大写)

g~w (是改变光标到词尾)

guu gUU g~~ (是改变一行)

2.1.7. split

:split <filename>     按拆分模式打开文件,默认为上下拆分
:vsplit <filename>    左右拆分
Ctrl-w w

切换活动窗口

Ctrl-w Ctrl-w

同上

Ctrl-w h/j/k/l

切换活动窗口为 左/上/下/右 边的窗口

:q

关闭光标所在的分屏

2.1.8. vimrc

neo@netkiller:~$ cat /home/neo/.vimrc
set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker
set paste
set ruler
set number
set nocp " don't open Vim in Vi-compatible mode
set bs=2 " setup backspace to delete previous char in insert mode
set encoding=utf-8 fileencodings= " set UTF-8 for all files
set autoindent
set smartindent
set t_Co=256
syntax on
set syntax=tt2html
set hlsearch
colorscheme elflord

2.1.9. vimdiff - edit two or three versions of a file with Vim and show differences

# vimdiff  FILE_LEFT  FILE_RIGHT
# vim -d  FILE_LEFT  FILE_RIGHT
# vim FILE_LEFT
:vertical diffsplit FILE_RIGHT
2.1.9.1. 光标移动

左右窗口联动控制

:set scrollbind
:set noscrollbind

在各个差异点之间快速移动。

]c    跳转到下一个差异点
[c  跳转到上一个差异点

如果在命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。比如如果在位于第一个差异点的行输入"2]c",将越过下一个差异点,跳转到第三个差异点。

2.1.9.2. 文件合并

文件比较的最终目的之一就是合并,以消除差异。如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令
dp (diff "put")如果希望把另一个文件的内容复制到当前行中,可以使用命令
do (diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)如果希望手工修改某一行,可以使用通常的vim操作。如果希望在两个文件之间来回跳转,可以用下列命令序列:
Ctrl-w, w在修改一个或两个文件之后,vimdiff会试图自动来重新比较文件,来实时反映比较结果。但是也会有处理失败的情况,这个时候需要手工来刷新比较结果:
:diffupdate如果希望撤销修改,可以和平常用vim编辑一样,直接
<ESC>, u但是要注意一定要将光标移动到需要撤销修改的文件窗口中。

2.1.9.3. 上下文

上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置:
:set diffopt=context:3可以用简单的折叠命令来临时展开被折叠的相同的文本行:
zo (folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)然后可以用下列命令来重新折叠:
zc (folding close)

2.1.9.4. 保存于退出

同时操作两个文件
在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。比如同时退出:
:qa (quit all)如果希望保存全部文件:
:wa (write all)或者是两者的合并命令,保存全部文件,然后退出:
:wqa (write, then quit all)如果在退出的时候不希望保存任何操作的结果:
:qa! (force to quit all)

2.1.10. vim backup script

#!/bin/bash
########################################
# vim script for automatic backup by neo
########################################datetime=`date +"%Y-%m-%d.%H:%M:%S"`
current_date=`date +"%Y-%m-%d"`
current_time=`date +"%H:%M:%S"`
filename=`basename $1`
original=$1if [ -f ${original}.original ]
thenecho "[${datetime}] [B] ${original} to ${original}.original" >> ~/backup/history.log
elsecp ${original} ${original}.original
fiif [ -d ~/backup/${current_date} ]
thenecho "[${datetime}] [O] ${original}" >> ~/backup/history.log
elsemkdir -p ~/backup/${current_date}echo [${datetime}] [C] mkdir ~/backup/${current_date} >> ~/backup/history.log
fibackup=~/backup/${current_date}/${filename}.${current_time}
if [ -f ${original} ];
thencp ${original} ${backup}echo "[${datetime}] [B] ${original} to ${backup}" >> ~/backup/history.log
fivim ${original}datetime=`date +"%Y-%m-%d.%H:%M:%S"`
current_date=`date +"%Y-%m-%d"`
current_time=`date +"%H:%M:%S"`
newfile=~/backup/${current_date}/${filename}.${current_time}if [ -f ${original} ];
thenif [ -f ${backup} ];thenoriginal_sha=`sha1sum ${backup} |awk -F ' ' '{print $1}'`newfile_sha=`sha1sum ${original} |awk -F ' ' '{print $1}'`if [ $original_sha = $newfile_sha ];thenecho "[${datetime}] --- " >> ~/backup/history.logexitfificp ${original} ${newfile}echo "[${datetime}] [M] ${original}" >> ~/backup/history.logecho "[${datetime}] [B] ${original} to ${newfile}" >> ~/backup/history.logfi
echo "[${datetime}] --- " >> ~/backup/history.log
exit

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

第 2 章 Editor相关推荐

  1. zynqpl端时钟_第十一章 ZYNQ-MIZ701 PS读写PL端BRAM

    本篇文章目的是使用Block Memory进行PS和PL的数据交互或者数据共享,通过zynq PS端的Master GP0端口向BRAM写数据,然后再通过PS端的Mater GP1把数据读出来,将结果 ...

  2. FreeBSD 6.0架设管理与应用-第三章 UNIX 系统入门

    在开始进阶的 FreeBSD 设定之前,我们先来了解一下 UNIX 系统的架构及基本知识.这些知识对于我们之后管理.使用 FreeBSD 十分重要.如果您是 UNIX 新手,请务必详读本章. 本章将介 ...

  3. 第二十四章:页面导航(六)

    制作导航菜单 如果您的应用程序包含各种不同但在架构上相同的页面,所有这些页面都可以从主页导航,那么您可能有兴趣构建有时称为导航菜单的页面. 这是一个菜单,其中每个条目都是特定的页面类型. ViewGa ...

  4. python基础课程第12章,Python基础教程学习笔记 | 第12章 | 图形用户界面

    Python支持的工具包很多,但没有一个被认为标准的工具包,用户选择的自由度大些.本章主要介绍最成熟的跨平台工具包wxPython.官方文档: ------ 丰富的平台: Tkinter实际上类似于标 ...

  5. 十二 手游开发神器 cocos2d-x editor 之游戏暂停悬浮层

    进入游戏主场景,游戏需要临时暂停.重新选关.重新玩等等,所以玩家点击暂停按钮,弹出一个选择悬浮层,这一节我们来实现: 效果如下: 点击右上角游戏暂停: 返回回到开始界面: 代码下载:http://ww ...

  6. 16第一章 ASP.Net编程基础知识

    第一章        ASP.Net编程基础知识 第一章        ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...

  7. Spring - Java/J2EE Application Framework 应用框架 第 12 章 Web框架

    第 12 章 Web框架 12.1. Web框架介绍 Spring的web框架是围绕分发器(DispatcherServlet)设计的,DispatcherServlet将请求分发到不同的处理器,框架 ...

  8. Spring - Java/J2EE Application Framework 应用框架 第 3 章 Beans, BeanFactory和ApplicationContext

    第 3 章 Beans, BeanFactory和ApplicationContext 3.1. 简介 在Spring中,两个最基本最重要的包是 org.springframework.beans 和 ...

  9. 鸟哥的Linux私房菜(基础篇)-第五章、首次登陆与在线求助 man page

    第五章.首次登陆与在线求助 man page 最近升级日期:2009/08/17 终于可以开始使用Linux这个有趣的系统了!由于Linux系统使用了异步的磁盘/内存数据传输模式,同时又是个多人多任务 ...

最新文章

  1. 关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named ‘robot‘
  2. Palindrome Linked List
  3. php smeoa,install.php
  4. 【转】接口 与 抽象类
  5. python isalnum函数_探究Python中isalnum()方法的使用
  6. java ajax 导出excel文件_springMVC(4)---生成excel文件并导出
  7. cygwin/gcc与MinGW
  8. Linux内核模块开发常用内核接口
  9. pytorch load state dict_pytorch源码阅读(二)optimizer原理
  10. Out of resources when opening file './xxx.MYD' (Errcode: 24)解决方法
  11. amazeUI 复择框问题解决
  12. VC 2012 中调用WebBrowser简单的实现过程(图解过程)
  13. Linux系统安装Nvidia显卡驱动
  14. EPSON/爱普生打印机Linux打印服务器基于ARM驱动安装踩坑CUPS实现支持远程打印AirPrint
  15. 东营网站服务器部署,联通东营服务器dns地址
  16. 大学应届毕业生面临的压力和应对办法
  17. 计算机制造属于轻工业吗,哪些行业属于轻工业?
  18. 7个你不可不知的大数据定义
  19. 原生threeJS入门
  20. 网站在线监控工具Statping

热门文章

  1. Nodejs+Express学习二(Mongoose基础了解)
  2. JavaScript学习笔记(2)——JavaScript和DOM的关系
  3. Sizeof与Strlen的区别与联系(转)
  4. java中的队列详解
  5. 从 Domino 7.x 升级到 Domino 8.0.1 后服务器性能下降
  6. Openssl生成证书流程
  7. Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera
  8. phoenix 开发API系列(二)phoenix 各类 api 实现方式
  9. Eclipse使用的小细节归档
  10. thinkphp的伪静态化