Ubuntu12.04无法使用vim系统剪贴板解决方法

以前一直是用鼠标来复制和粘贴网页里复制的文字,还有使用Ctrl+Shift+C/V.也查过在vim里怎么使用复制粘贴,只学会了用dd和p这两个。哎,笨呐。
今天终于理解了vim里多个剪贴板的使用。:reg查看VIM里所有剪贴板的文件。但是我这个Ubuntu12.04就没+和×。解决方法是安装以下这几包。我是又重装了一下vim。

1 问题来源

用 apt-get install安装的vim不能使用系统剪贴板,即复制:”+y,和粘贴”+p不能用;用:reg 命令查看没有”+寄存器

2 软件版本

操作系统:ubuntu 12.04;vim版本 7.3.429

3 安装过程

3.1 安装相关软件包

$ sudo apt-get install build-essential
$ sudo apt-get install ncurses-dev
$ sudo apt-get install xorg-dev
$ sudo apt-get install libgtk2.0-dev

3.2 安装vim

sudo apt-get install vim vim-scripts vim-gnome vim-gtk
sudo apt-get install exuberant-ctags cscope

设置映射:

let mapleader = “,”
let g:mapleader = “,”

map c “+y
map p “*p

请现在使用一下“:reg”命令(先按ESC 键,退出编辑模式,然后按:进入命令模式,然后输入reg回车),看到了?屏幕上的输出结果!是不是特别眼熟,对了!就是您之前复制过的所有内容!也许这 时候您还发现,VIM的剪切板原来有这么多个,按照数字还有符号一个一个的区分开的,这里举一个编号的例子——”5,看到了吗?是以”开头的。还有!有没 有看到编号为”+的剪切板?里面的内容是不是刚才你在浏览器里复制的那段文字啊?呵呵……没错了!系统剪切板的编号就是”+。

好了, 这时候您已经知道了如何查看之前的所有剪贴板内容,我们现在就试着把某一个特定剪切板的内容复制进我们正在编辑的文件中。我们知道,vi的粘贴指令是 “p”,但是如果要粘贴一个特定的剪贴板,只是用p就不行了,那怎么办?简单!把剪贴板的编号带上不就可以了?现在先按ESC,退出编辑模式,然后一词 按”+p这三个字符(怎么按?不会吧!”和+怎么按?用Shift啊!),好了!你看看,之前在浏览器中复制的这段文本,是不是被粘贴进文档中了?

如何将系统剪切板里的内容复制进VIM当中,您已经清楚了。那如何将ViM中复制的字符粘贴到其他地方呢?很简单,我们只需要把要复制的文字,复制 进”+剪切板不就可以了?(”+剪切板是系统剪切板,忘记了?)在VIM中,复制的指令是y(在非编辑模式下按y就可以了),那要将文本复制进指定的剪切 板,和粘贴指定剪切板内容的方法一样,只需要加上剪切板的编号就可以了。举个例子,我们希望把VIM中的一段文本复制下来,然后粘贴到浏览器的地址栏中: 第一步,现把需要复制的文字选中(非编辑模式下),然后在键盘上依次按”+y这三个字符,OK!已经复制下来了,现在用:reg命令看看,是不是在”+剪 切板中了?

Linux下vi和vim不正常的解决方法

用vi编辑文件遇到各种说不出的问题,按i插入移动一下光标,中文字就变乱码鸟,反正是各种不正常。以为是vi的问题,卸载重装了还是一样,那就是编码的问题了,因为我上传的都是UTF-8的文件,在其它linux上都是好的。

用在我这台的解决方法是:
编辑/etc/vimrc文件:

vim /etc/vimrc
set encoding=utf-8
set langmenu=zh_CN.UTF-8	
language message zh_CN.UTF-8

上面的意思是使vi同时支持GBK和UTF-8编码

操作系统语言是英文,显示中文字符

编辑/etc/sysconfig/i18n,修改为如下内容:

LANG="zh_CN.UTF-8"

继续阅读“Linux下vi和vim不正常的解决方法”

解决end_request I/O error on device fd0,sector 0 Buffer I/O error on device fd0,logical block 0

以前刚装好Archlinux的时候就发现了,切换到tty1 2 3 4 下面就一直出现下面两行的error提示
end_request I/O error on device fd0,sector 0
Buffer I/O error on device fd0,logical block 0
后来一直也没管它,偶尔开机后还会卡住gonme进不去,我还一直以为是我的USB摄像头的问题呢!

今天下定决心要把它搞定。用心google了一把,问题出现在fd0上面,也就是floppy上面,这个floppy也就是软驱,话说从我开始玩电脑起就没用过这玩意。虽然表哥送的电脑有软驱。
查看是否加载了floppy模块:

#lsmod | grep -i floppy

如果显示像下面这行说明加载了floppy模块。

floppy                 95465  0

在ArchWiKi里查到禁用软驱模块的方法有几种:
Kernel modules (简体中文)
黑名单
对内核模块来说,黑名单是指禁止某个模块装入的机制。当对应的硬件不存在或者装入某个模块会导致问题时很有用。

有些模块作为 initramfs 的一部分装入。

mkinitcpio -M 会显示所有自动检测到到模块:要阻止 initramfs 装入某些模块,可以在 /etc/modprobe.d/modprobe.conf 中将它们加入黑名单。

运行 mkinitcpio -v 会显示各种钩子(例如 filesystem 钩子, SCSI 钩子等)装入的模块。如果要禁用这些模块,记得在配置完成后重新生成 initramfs。
使用 /etc/modprobe.d/ 中的文件
/etc/modprobe.d/ 中创建 .conf 文件,使用 blacklist 关键字屏蔽不需要的模块,例如如果不想装入 pcspkr 模块:

/etc/modprobe.d/nobeep.conf
# Do not load the pcspkr module on boot
blacklist pcspkr
注意: blacklist 命令将屏蔽一个模板,所有不会自动装入,但是如果其它非屏蔽模块需要这个模块,系统依然会装入它。

要避免这个行为,可以让 modprobe 使用自定义的 install 命令,直接返回导入失败:

/etc/modprobe.d/blacklist.conf
...
install MODULE /bin/false
...

这样就可以 “屏蔽” 模块及所有依赖它的模块。
使用内核命令行
同样可以通过内核命令行(位于 GRUBLILOSyslinux)禁用模块:

modprobe.blacklist=modname1,modname2,modname3

或者:

modname.disable=1

当某个模块导致系统无法启动时,可以使用此方法禁用模块。
使用 GRUB 的示例

/boot/grub/menu.lst
...
kernel /vmlinuz-linux root=/dev/sda1 modprobe.blacklist=pcspkr,ipv6 ro
...
/boot/grub/menu.lst
...
kernel /vmlinuz-linux root=/dev/sda1 pcspkr.disable=1 ipv6.disable=1 ro
...

我使用的方法是在/boot/grub/menu.lst里面加上modprobe.blacklist=floppy
打开编辑/boot/grub/menu.lst文件

vim /boot/grub/menu.lst
...
kernel /vmlinuz-linux root=/dev/sda1 modprobe.blacklist=floppy ro ...
...

修改完保存重启系统

# reboot

CentOS DNS resolv重起无效的解决方法

上上个星期重装安装了一台CentOS 6.2手动分配了一下ip地址,在/etc/resolv.conf这里设置好了DNS。之后可以上网鸟。重起机子后无后ping能网站了,打开/etc/resolv.conf发现又变回没测试之前的。

原来直接修改/etc/resolv.conf不行。必须要在/etc/sysconfig/network-scripts/ifcfg-eth0里面最后加上dns的设置。要不然,重启后,肯定使用eth0设置中没有设dns的相关信息,使/etc/resolv.conf恢复到原来的状态。

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
HWADDR=00:xx:19:xx:xx:xx
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
NETMASK=255.255.255.0
IPADDR=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
DNS1=202.96.209.5 #上海dns,根据实际情况更换
DNS2=202.96.209.133 #上海dns,根据实际情况更换

这样设置后/etc/resolv.conf里面根本就不需要设置。
service network restart后,可以发现/etc/resolv.conf里面就有两个dns的解析ip了。

cat /etc/resolv.conf

Generated by NetworkManager
nameserver 202.96.209.5
nameserver 202.96.209.133
search localdomain

DNS解析设置成功。
在此要强调一点的是,直接修改/etc/resolv.conf这个文件是没用的,网络服务重启以后会根据/etc/sysconfig/network-scripts/ifcfg-eth0来重载配置,如果ifcfg-eth0没有配置DNS,那么resolv.conf会被冲掉,重新变成空值。

哎,不知道为啥以前装的系统没有出现这样的情况呢?

修改host文件
打开host文件

/etc/hosts

添加你需要的项,格式如下:

格式:

<IP> <HOSTNAME>.<DOMAIN> <ALIAS>

示例:

216.239.37.99 www.google.com

编辑后,你需要重新启动一下你的网络。

/etc/init.d/networking restart

use expect SSH Auto login

一、要安装这两个东东。
CentOS下

1
yum install tcl
tcl.x86_64 1:8.5.7-6.el6
2
yum install expect
expect.x86_64 0:5.44.1.15-2.el6

ArchLinux下

1
pacman -S tcl
2
pacman -S expect

自动登了ssh脚本

vim sshlogin.exp

 

#!/usr/bin/expect -f
#auto ssh login

set timeout 20
spawn ssh -qTfnN -D 7070 你的登录用户@服务器ip地址

expect "*password:"
send "you passwd\r"
interact

chmod +x sshlogin.exp
二、实现开机自动登录到tty4。
以下是在ArchLinux上操作的,其它系统也差不多。
1、安装自动登录tty的软件

pacman -S mingetty

mingetty-1.08-3-x86_64

vi /etc/inittab

找到关于tty4的,在Archlinux里是c4:2345:respawn:/sbin/agetty…这样的一行改成

c4:23:respawn:/sbin/mingetty --autologin javasboy tty4

把javasboy换成你要登录的用户,且能运行上面脚本的权限。
2、在javasboy用户下的~/.bashrc里面加上:

tty | grep -q tty4 && /home/javasboy/bin/sshlogin.exp

这样tty4就能开机运行这个命令了。

还可以通过crond定时检测7070端口和ssh进程是否运行来重新启动,这样就能实现断线自动重连的功能了。
在此感谢SUN的无私帮助。

博客顺利转入laird提供的空间

博客成功转入laird提供的空间,小弟是十分的感激啊。还有教我学perl。嗯这个必须要学会!
转到这个空间还有遇到点小问题的,就是wordpress不能上传文件和安装插件和主题,大部分原因是权限问题导致的。
而我转入的时候权限都设置好了,原因是nginx和php-cgi所运用的用户不一至。
改成统一的就OK了。

wordpress rewrite写法

        rewrite ^/wp-admin$ /wp-admin/ permanent;

        if (-f $request_filename/index.html){
                        rewrite (.*) $1/index.html break;
                }
        if (-f $request_filename/index.php){
                        rewrite (.*) $1/index.php;
                }
        if (!-f $request_filename){
                        rewrite (.*) /index.php;
                }
    }