2025年11月14日 星期五

加rust到vimrc

新增rust.vim與coc.nvim 並且把tagfunc設成CocTagFunc

這樣就能使用tag對rust定義的跳轉

3 " set the runtime path to include Vundle and initialize↵
4 set rtp+=~/.vim/bundle/Vundle.vim↵
5 call vundle#begin()↵
6 "set rtp+=~/.vim/bundle/vundle/↵
7 "call vundle#rc()↵
8 ↵
9 "let Vundle manage Vundle↵
10 "required!↵
11 Plugin 'VundleVim/vundle.vim'↵
12 "Bundle 'Shougo/neocomplete.vim'↵
13 Plugin 'Shougo/vimproc.vim'↵
14 Plugin 'Shougo/vimshell.vim'↵
15 Plugin 'mbbill/echofunc'↵
16 Plugin 'derekwyatt/vim-scala'↵
17 Plugin 'rust-lang/rust.vim'↵
18 Plugin 'neoclide/coc.nvim', {'branch': 'release'}↵
19 ↵
20 " All of your Plugins must be added before the following line↵
21 call vundle#end() " required↵
22 filetype plugin indent on " required↵
121 set tagfunc=CocTagFunc↵

2025年10月30日 星期四

安裝Coc.nvim與coc plugin

 安裝完Coc.nvim之後

透過:CocInstall coc-rust-analyzer發生錯誤

透過檢查:CocOpenLog發現

Vim(redir):E930: Cannot use :redir inside execute() on function coc#api#Command

redir有問題

於是採用手動安裝的方式

cd ~/.config/coc/extensions

npm install coc-rust-analyzer --global-style --ignore-scripts --no-bin-links

然後在Vim裡透過

:CocList extensions

[No Name][+] [unix] [] [utf-8] [ASCII=000] [POS=0001,0001][100%] [LEN=1]                                                             []
 * coc-snippets 3.4.7 ~/.config/coc/extensions/node_modules/coc-snippets                                                               
 + coc-rust-analyzer 0.85.0 ~/.config/coc/extensions/node_modules/coc-rust-analyzer        

可以看到安裝成功

升級方法:

npm update coc-rust-analyzer --global-style

:CocRestart

2021年8月2日 星期一

extract cpio uboot

移掉u-boot tool生成的64byte header

dd if=rootfs.cpio.uboot_32 of=rootfs.cpio.gz bs=64 skip=1

解開gz

gunzip rootfs.cpio.gz

讀出rootfs

mkdir rootfs; cd rootfs

使用fakeroot來避免 sudo

fakeroot

cpio -i < ../rootfs.cpio

更改....

重新打包 # rm dev/*

 find . | cpio -H newc -o | gzip -9 > ../new_initramfs.cpio.gz 

離開fakeroot

exit

加回header

 mkimage -A arm -T ramdisk -C gzip -d new_initramfs.cpio.gz uramdisk.image.gz

reference:

https://community.nxp.com/t5/i-MX-Processors/modify-initramfs/m-p/194825

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842473/Build+and+Modify+a+Rootfs?view=blog

2019年1月11日 星期五

如何在python上使用gtags

gtags本身並不支援Python
但是有個透過plugin可以加上python syntax highlighting來生成正確的tag
用法:
$ sudo pip install Pygments
$ git clone https://github.com/yoshizow/global-pygments-plugin.git
$ cd global-pygments-plugin
$ ./reconf.sh
$ ./configure
$ make
$ sudo make install
$ cp sample.globalrc ~/.globalrc

參考資料:
[1] https://stackoverflow.com/questions/5661485/how-to-add-python-plug-in-to-gnu-global
[2] https://github.com/yoshizow/global-pygments-plugin

2018年11月27日 星期二

vim +cscope字串搜尋

在vim +cscope裡尋找一個字串
:cs f s mystring
會跳出一連串待選列1....
需要一個個選擇有點麻煩
解決的方法就是打開cscopequickfix
這樣就可以利用cn, cp (cnext, cprevious)在前後之間跳躍

參考資料:

https://stackoverflow.com/questions/28185067/vim-go-to-next-search-result-across-multiple-files

2014年9月15日 星期一

androidized kernel跑在linux上的眉角之二(locale)

當locale沒被設定的時候
會自動fall back到"C"
這時可能會對許多package執行造成困擾
這時候就可以用如下的命令解決
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

 
參考資料:
http://www.thomas-krenn.com/en/wiki/Perl_warning_Setting_locale_failed_in_Debian

2014年9月12日 星期五

androidized kernel跑在linux上的眉角之一(ethernet)

把一個android kernel配上linux root file system
什麼怪事都會發生
例如說
root@ubuntu:/# ping 8.8.8.8
socket: Permission denied
什麼?有沒有搞錯?permission denied?
我可是天下無敵無所不能的root耶
居然連ping都不能用
.
.
.
.
.
經過了一番google的努力後
才發現原來android的權限設置遠比原生linux還要複雜
必須要在/etc/group裡加入下列兩行
inet:x:3003:root
net_raw:x:3004:root 

root才能使用inet的功能
如果別的用戶要使用inet都必需要加到這兩個group裡面
真是太麻煩了
但!
有個一勞永逸的方法
就是把
CONFIG_ANDROID_PARANOID_NETWORK
關掉就好了
簡單吧