Monthly Archives: July 2011

[Struts2] invalidate session 和 新建 session

invalidate:

 ((org.apache.struts2.dispatcher.SessionMap<String, Object>) session).invalidate();

http://struts.apache.org/2.0.14/docs/how-do-we-get-invalidate-the-session.html

创建新session:

  不需要自写代码。因为当你用session.put(xxx,xxx)时,Struts2如果发现当前没有httpSession就会自己新建一个。

//org.apache.struts2.dispatcher.SessionMap
    public V put(K key, V value) {
        synchronized (this) {
            if (session == null) {
                session = request.getSession(true);
            }
        ....
      }
   

[Linux]vi – 复制与剪切

复制:

case 1: 在某处用yw复制一个词,在另一处用p粘贴回来

case 2: 在某处用yy复制一行,在另一处用p粘贴回来

剪切:

case 1: 在某处用x删除一个字符,在另一处用P粘贴回来

case 2: 在某处用dw删除一个词,在另一处用p粘贴回来

P:在当前光标处插入上次删除的内容

p: 在当前光标右边插入上次删除的内容

[Linux]vi – 查找与替换

查找

/hey:  向下查找"hey"

/[a-z]: 向下查找小写字母

查找后输入n: 下一个匹配处

查找后输入N: 上一个匹配处

?hey:  向上查找"hey"

替换

:s/vim/vi: 把下一个vim替换成vi

:%s/vim/vi/g: 把所有行中的vim都替换成vi (如果不加g则只替换每行第一个)

[Linux]vi命令 — 修改内容

从命令状态转到输入状态:

  i: 在光标前插入

  a: 在光标后插入

  I: 在本行的开始处插入

  A: 在本行的结束处插入

  o: 在本行的下面插入

  O: 在本行的上面插入

不进入输入状态而替换内容:

  r: 替换当前光标上的字符

  sabc<Esc>: 用abc替换当前光标上的字符

  Cabcd<Esc>: 用abcd替换当前光标上的字符开始,直到行尾

  Sabcd<Esc>: 用abcd替换当前整行

  ~: 大小写互换

不进入输入状态而删除内容:

  x: 删除当前光标上的字符

  X:删除光标左边的字符

  D: 从光标处一直删到行尾

  dd: 删除当前行

  d10G:从光标处删到第10行(10G)

  dj: 从光标处删到下一行(j)

:50d: 删除第50行

:50,60d:删除第50至第60行

[Linux]vi – 光标移动命令

移动光标

  h,j,k,l: 向左、下、上、右移动一个位置

  0, $: 移动到一行的开始处/结尾处

  w,e,b: 下一个单词的头部,下一个单词的尾部,前一个单词的头部

  H,M,L: 移动当前屏幕的顶行、中间行和最后一行

  50w: 右移50个单词

  50j: 下移50行

  ^F: 向下移动一屏

  6^F: 向下移动六屏

  ^B:向上移动一屏

  6^B: 向上移动六屏

  1G: 跳到第一行

  33G: 跳到第33行

   G: 跳到最后一行

:set number : 显示行号

:set nonumber: 不显示行号

[Linux] vi命令 — 保存、退出、切换文件

保存:

:w 保存

:w hi.bak 保存到hi.bak中(但VI当前正在编辑的文件仍是原来那个文件)

:w >> another.txt 把当前内容追加到another.txt中

停止vi

  ZZ : 保存并退出

  :q! : 退出,不保存

切换文件:

  :e 2.txt   — 切换到2.txt(前提是当前文件已保存)

  :e !2.txt  — 切换到2.txt,如果当前文件未保存,丢弃修改