头疼了一个小时就为这个……
同时用vim打开.h和.cpp文件看起来比较方便,于是想写个vim脚本来解决一下。可是竟连个简单的function都出错。
function Myfoo() let filename = getreg("%"); let pos = strridx(filename, "."); return strpart(filename, 0, pos); endfunction
问题提示这个:Invalid expression: getreg("%");
看了半天也看不出是什么问题。把getreg换成strlen()这样简单的函数也还是出错,上google搜索几乎没有内容。心中万分郁闷啊……
后来,屡试屡败中终于找到了症结所在:一个分号!
原来写代码习惯了,在每行后面写上一个分号……可是vim script里面是没有分号的。折腾了半天,头都大了,竟为这个,唉……
ps:
用vim打开.h和.cpp文件的方法:
map ,v :vs<CR><C-W><C-W>:e %<.cpp<CR>
更新:
上面是用map的方法实现了这个功能,这得益于%<这个变量,它存储的是去掉后缀的文件名。如果不知道这个变量,想通过自己编写的函数来实现这个功能呢?
其实函数并不难写,只是如何在命令中调用函数。直接写肯定是不可以的。下面先写改正后的Myfoo()函数:
function Myfoo() let filename = getreg("%") let pos = strridx(filename, ".") let name = strpart(filename, pos) return name endfunction
要在命令行中调用这个函数,需要用到:execute命令,如:
:execute "e ".Myfoo()
假设正在编辑的文件是fun.h,这个命令就会执行e fun。正是我们想要的效果。好了,下面的语句是使用我们自己写的函数实现在两个窗口中分别编辑.h和.cpp
map ,q <C-W>v<C-W><C-W>:execute "e ".Myfoo().".cpp"<CR>