比Top更好用的Htop
Linux下的监测系统程序运行的软件有很多,像system moniter,top等。对于CLI控来说,系统自带的top命令就是一个很不错的系统监测程序。我也一直用top命令查看系统进程,不过偶然发现的htop却让我眼前一亮。htop相当于top的增强版本,如图:
吐槽海贼王鱼人岛篇
海贼王进入到鱼人岛篇后,个人感觉上WT有点拖剧情。虽然鱼人岛这三个字从海贼王开篇就提出来了,中间也有一直提到,可以看出鱼人岛在WT构造的海贼世界里占有很重的分量,不过想对于水之都篇中的激情四射,鱼人岛就有点像空岛篇刚开始时的平淡,甚至有些无聊。
Gnome 3中添加开机启动程序
今天将自己的arch装上了gnome 3,应为之前用过fedora 15,所以对gnome 3还是蛮适应的。但当我突然发现我的小企鹅输入法不能开机启动了,之前用openbox的时候,在~/.config/openbox/autostart.sh中添加就好了,gnome 3一下子不知道怎么弄了。。。以前gnome 2的时候还有配置开机启动的程序,gnome 3突然找不到了。。。
不过还好,终于在arch wiki里找到了添加开机启动程序的方法,打开终端,输入:
1 | $:gnome-session-properties |
然后熟悉的界面就出来了
接下来就自己添加吧。^_^
其实也可以通过写.desktop文件来开机启动。
在 ~/.config/autostart/ 下添加appname.desktop文件,例如要添加fcitx开机启动,可以这样写:
1 2 3 4 5 6 7 8 9 | [Desktop Entry] Type=Application Exec=fcitx Hidden= false X-GNOME-Autostart-enabled= true Name[en_US]=fcitx Name=fcitx Comment[en_US]= Comment= |
将fcitx改成你想开机启动的程序即可。
“海贼王,我当定了”
在标准python shell中开启tab自动完成
我们在使用python shell的时候,默认没有开启tab补全功能,有时候忘记了某个函数怎么写,这时候补全功能就能给我们很大的帮助了。如果你使用的是Ipython,那tab补全默认是开启的,在标准python shell中开启tab补全,只要打开python shell,然后
1 2 | >>> import rlcompleter, readline >>>readline.parse_and_bind( 'tab: complete' ) |
之后,就能在标准python shell中使用tab补全了。
为了每次都能开启tab补全,可以自己创建一个PYTHONSTARTUP文件。比如在 ~/.config/下创建文件pythonstartup.py
将上面代码写进pythonstartup.py中,再将其添加进环境变量中。
在~/.bashrc或者~/.zshrc中加入:
1 | export PYTHONSTARTUP= "/home/name/.config/pythonstartup.py" |
Git的一些基本用法
最近自己的一些arch的配置文件经常修改,基本有着自己的风格了,为了便于更好的使用,便在github建了一个git库,方便自己管理。
因为刚使用git,便记录一些基本用法(摘自git使用指南):
第一次使用git时,需要进行一些全局设置
1 2 | $ git config --global user.name "Your Name Comes Here" $ git config --global user.email you@yourdomain.example.com |
进入工作目录,并初始化git仓库
1 2 | $: cd WORK_DIR $: git init |
1 2 | $: cd WORK_DIR $: git add . |
1 | $: git commit |
1 | $ git commit -m "你的版本更新信息" |
我的vim配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 | let mapleader = ";" " 比较习惯用;作为命令前缀,右手小拇指直接能按到 " 把空格键映射成: nmap <space> : " 快捷打开编辑vimrc文件的键盘绑定 map <silent> <leader> ee :e $HOME/.vimrc <cr> autocmd ! bufwritepost *.vimrc source $HOME/.vimrc inoremap <leader> n <esc> " 自动切换目录 autocmd BufEnter * silent ! lcd %:p:h " 判断操作系统 if (has( "win32" ) || has( "win64" ) || has( "win32unix" )) let g:isWin = 1 else let g:isWin = 0 endif " 判断是终端还是gvim if has( "gui_running" ) let g:isGUI = 1 else let g:isGUI = 0 endif "====================================================== " 基本设置 " {{{ set nocompatible " 关闭兼容模式 set display =lastline syntax enable " 语法高亮 filetype plugin on " 文件类型插件 filetype indent on set shortmess =atI " 去掉欢迎界面 set autoindent autocmd BufEnter * : syntax sync fromstart set nu " 显示行号 set showcmd " 显示命令 set lz " 当运行宏时,在命令执行完成之前,不重绘屏幕 set hid " 可以在没有保存的情况下切换 buffer set backspace = eol ,start,indent set whichwrap +=<,>,h,l " 退格键和方向键可以换行 set incsearch " 增量式搜索 set nohlsearch "set hlsearch " 高亮搜索 set ignorecase " 搜索时忽略大小写 set magic " 额,自己:h magic 吧,一行很难解释 set showmatch " 显示匹配的括号 set nobackup " 关闭备份 set nowb set noswapfile " 不使用swp文件,注意,错误退出后无法恢复 set lbr " 在 breakat 字符处而不是最后一个字符处断行 set ai " 自动缩进 set si " 智能缩进 set cindent " C/C++风格缩进 set wildmenu set nofen set fdl =10 " tab转化为4个字符 set expandtab set smarttab set shiftwidth =4 set tabstop =4 " 不使用beep或flash set vb t_vb= set background =dark set t_Co=256 colorscheme desert256 set history =400 " vim 记住的历史操作的数量,默认的是20 set autoread " 当文件在外部被修改时,自动重新读取 set mouse =n " 在所有模式下都允许使用鼠标,还可以是n,v,i,c等 "}}} "====================================================== "在gvim中高亮当前行 if (g:isGUI) set cursorline colorscheme wombat hi cursorline guibg=#333333 hi CursorColumn guibg=#333333 "set guifont=Consolas\ 10 set gfn =Ubuntu\ Mono\ 12 set guifontwide =Ubuntu\ Mono\ 12 " 不显示toolbar set guioptions -=T " 不显示菜单栏 set guioptions -=m " 关闭左右滚动条 set guioptions -=L set guioptions -=r endif "====================================================== " 设置字符集编码,默认使用utf8 if (g:isWin) let & termencoding =& encoding " 通常 win 下的 encoding 为cp936 set fileencodings =utf8,cp936,ucs-bom,latin1 else set encoding =utf8 set fileencodings =utf8,gb2312,gb18030,ucs-bom,latin1 endif "====================================================== " 状态栏 set laststatus =2 " 总是显示状态栏 highlight StatusLine cterm=bold ctermfg=yellow ctermbg=blue " 获取当前路径,将$HOME转化为~ function ! CurDir() let curdir = substitute(getcwd(), $HOME, "~" , "g" ) return curdir endfunction set statusline =[%n]\ %f%m%r%h\ \|\ \ pwd :\ %{CurDir()}\ \ \|%=\|\ %l,%c\ %p%%\ \|\ ascii =%b,hex=%b%{((& fenc ==\"\")?\"\":\"\ \|\ \".& fenc )}\ \|\ %{$USER}\ @\ %{hostname()}\ "====================================================== " 第80列往后加下划线 "au BufWinEnter * let w:m2=matchadd('Underlined', '\%>' . 80 . 'v.\+', -1) " 根据给定方向搜索当前光标下的单词,结合下面两个绑定使用 function ! VisualSearch(direction) range let l:saved_reg = @" execute "normal! vgvy" let l:pattern = escape(@", '\\/.*$^~[]' ) let l:pattern = substitute(l:pattern, "\n$" , "" , "" ) if a:direction == 'b' execute "normal ?" . l:pattern . "<cr>" else execute "normal /" . l:pattern . "<cr>" endif let @/ = l:pattern let @" = l:saved_reg endfunction " 用 */# 向 前/后 搜索光标下的单词 vnoremap <silent> * : call VisualSearch( 'f' ) <CR> vnoremap <silent> # : call VisualSearch( 'b' ) <CR> "====================================================== " 自定义按键 " {{{ " 在文件名上按gf时,在新的tab中打开 "map gf :tabnew <cfile><cr> " 用c-j,k在buffer之间切换 nn <C-J> : bn <cr> nn <C-K> : bp <cr> " Bash(Emacs)风格键盘绑定 imap <C-e> <END> imap <C-a> <HOME> "从系统剪切板中复制,剪切,粘贴 map <F2> "+y map <F3> "+x map <F4> "+p " 快捷输入 " 自动完成括号和引号 inoremap <leader> 1 () <esc> : let leavechar= ")" <cr> i inoremap <leader> 2 [] <esc> : let leavechar= "]" <cr> i inoremap <leader> 3 {} <esc> : let leavechar= "}" <cr> i inoremap <leader> 4 { <esc> o} <esc> : let leavechar= "}" <cr> O inoremap <leader> q '' <esc> : let leavechar= "'" <cr> i inoremap <leader> w "" <esc> : let leavechar= '"' <cr> i " c-j自动补全,当补全菜单打开时,c-j,k上下选择 imap <expr> <c-j> pumvisible()? "\<C-N>" : "\<C-X><C-O>" imap <expr> <c-k> pumvisible()? "\<C-P>" : "\<esc>" " f:文件名补全,l:行补全,d:字典补全,]:tag补全 imap <C-]> <C-X> <C-]> imap <C-F> <C-X> <C-F> imap <C-D> <C-X> <C-D> imap <C-L> <C-X> <C-L> "}}} "====================================================== " 恢复上次文件打开位置 set viminfo ='10,\"100,:20,%,n~/. viminfo au BufReadPost * if line( "'\"" ) > 0| if line( "'\"" ) <= line( "$" )|exe( "norm '\"" )| else |exe "norm $" | endif | endif " 删除buffer时不关闭窗口 command ! Bclose call <SID> BufcloseCloseIt() function ! <SID> BufcloseCloseIt() let l:currentBufNum = bufnr( "%" ) let l:alternateBufNum = bufnr( "#" ) if buflisted (l:alternateBufNum) buffer # else bnext endif if bufnr( "%" ) == l:currentBufNum new endif if buflisted (l:currentBufNum) execute( "bdelete! " .l:currentBufNum) endif endfunction "====================================================== " 插件设置 " {{{ " 插件窗口的宽度,如TagList,NERD_tree等,自己设置 let s:PlugWinSize = 25 " autocomplpop.vim let g:acp_behaviorKeywordLength = 4 "====================================================== " ConqueTerm.vim let g:ConqueTerm_FastMode = 1 " enable fast mode let g:ConqueTerm_Color = 0 " diable terminal colors let g:ConqueTerm_CloseOnEnd = 1 " close buffer when program exits "====================================================== " tagbar.vim " <leader>tb 打开Tagbar窗口 nmap <silent> <leader> tb :TagbarToggle <CR> let g:tagbar_left = 0 let g:tagbar_width = 25 "====================================================== " taglist.vim " <leader>t 打开TagList窗口,窗口在右边 nmap <silent> <leader> t :TlistToggle <cr> "let Tlist_Ctags_Cmd = '/usr/bin/ctags' let Tlist_Show_One_File = 0 let Tlist_Exit_OnlyWindow = 1 let Tlist_Use_Right_Window = 1 let Tlist_File_Fold_Auto_Close = 1 let Tlist_GainFocus_On_ToggleOpen = 0 let Tlist_WinWidth = s:PlugWinSize let Tlist_Auto_Open = 0 let Tlist_Display_Prototype = 0 "let Tlist_Close_On_Select = 1 "====================================================== " OmniCppComplete.vim set completeopt = menu let OmniCpp_NamespaceSearch = 1 let Omnicpp_GlobalScopeSearch = 1 let OmniCpp_ShowPrototypeInAbbr = 1 let OmniCpp_DefaultNamespaces = [ "std" , "_GLIBCXX_STD" ] " 逗号分割的字符串 let OmniCpp_MayCompleteScope = 1 let OmniCpp_SelectFirstItem = 2 "====================================================== " NERD_commenter.vim " Toggle单行注释/“性感”注释/注释到行尾/取消注释 map <leader> cc ,c <space> map <leader> cs ,cs map <leader> c$ ,c$ map <leader> cu ,cu "====================================================== " NERD tree let NERDTreeShowHidden = 1 let NERDTreeWinPos = "left" let NERDTreeWinSize = s:PlugWinSize nmap <leader> f :NERDTreeToggle <cr> "====================================================== " DoxygenToolkit.vim " 暂时没有使用 " 更新ctags和cscope索引 " href: http://www.vimer.cn/2009/10/把vim打造成一个真正的ide2.html " 稍作修改,提取出DeleteFile函数,修改ctags和cscope执行命令 map <F5> : call Do_CsTag() <cr> function ! Do_CsTag() let dir = getcwd() "先删除已有的tags和cscope文件,如果存在且无法删除,则报错。 if ( DeleteFile( dir , "tags" ) ) return endif if ( DeleteFile( dir , "cscope.files" ) ) return endif if ( DeleteFile( dir , "cscope.out" ) ) return endif if (executable( 'ctags' )) silent ! execute "!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q ." endif if (executable( 'cscope' ) && has( "cscope" ) ) if (g:isWin) silent ! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files" else silent ! execute "!find . -iname '*.[ch]' -o -name '*.cpp' > cscope.files" endif silent ! execute "!cscope -b" execute "normal :" if filereadable( "cscope.out" ) execute "cs add cscope.out" endif endif " 刷新屏幕 execute "redr!" endfunction function ! DeleteFile( dir , filename) if filereadable(a:filename) if (g:isWin) let ret = delete (a: dir . "\\" .a:filename) else let ret = delete ( "./" .a:filename) endif if ( ret != 0) echohl WarningMsg | echo "Failed to delete " .a:filename | echohl None return 1 else return 0 endif endif return 0 endfunction " cscope 绑定 if has( "cscope" ) set csto =1 set cst set nocsverb if filereadable( "cscope.out" ) cs add cscope.out endif set csverb " s: C语言符号 g: 定义 d: 这个函数调用的函数 c: 调用这个函数的函数 " t: 文本 e: egrep模式 f: 文件 i: include本文件的文件 nmap <leader> ss :cs find s <C-R> =expand( "<cword>" ) <CR> <CR> : copen <CR> nmap <leader> sg :cs find g <C-R> =expand( "<cword>" ) <CR> <CR> nmap <leader> sc :cs find c <C-R> =expand( "<cword>" ) <CR> <CR> : copen <CR> nmap <leader> st :cs find t <C-R> =expand( "<cword>" ) <CR> <CR> : copen <CR> nmap <leader> se :cs find e <C-R> =expand( "<cword>" ) <CR> <CR> : copen <CR> nmap <leader> sf :cs find f <C-R> =expand( "<cfile>" ) <CR> <CR> : copen <CR> nmap <leader> si :cs find i ^ <C-R> =expand( "<cfile>" ) <CR> $ <CR> : copen <CR> nmap <leader> sd :cs find d <C-R> =expand( "<cword>" ) <CR> <CR> : copen <CR> endif " Buffers Explorer (需要genutils.vim) let g:bufExplorerDefaultHelp=0 " Do not show default help . " let g:bufExplorerShowRelativePath=1 " Show relative paths. let g:bufExplorerSortBy= 'mru' " Sort by most recently used. let g:bufExplorerSplitRight=0 " Split left . let g:bufExplorerSplitVertical=1 " Split vertically. let g:bufExplorerSplitVertSize = s:PlugWinSize " Split width let g:bufExplorerUseCurrentWindow=1 " Open in new window . autocmd BufWinEnter \[Buf\ List\] setl nonumber nmap <silent> <Leader> b :BufExplorer <CR> "====================================================== " xmledit settings let xml_use_xhtml = 1 "====================================================== " Vimwiki配置 let g:vimwiki_list = [{ 'path' : '~/Dropbox/MyWiki/my_site/' , \ 'path-html' : '~/Dropbox/MyWiki/my_site_html/' , \ 'html-header' : '~/Dropbox/MyWiki/templates/header.tpl' , \ 'html-footer' : '~/Dropbox/MyWiki/templates/footer.tpl' }] let g:vimwiki_camel_case=0 let wiki = {} let wiki. path = '~/Dropbox/MyWiki/my_site/' let wiki.nested_syntaxes = { 'python' : 'python' , 'c++' : 'cpp' } let g:vimwiki_list = [wiki] "}}} "====================================================== " 文件类型 au BufNewFile , BufRead *.t2t set ft =txt2tags "au FileType python set ft=python.django "au FileType html set ft=htmldjango.html autocmd FileType python set omnifunc =pythoncomplete#Complete autocmd FileType html set omnifunc =htmlcomplete#CompleteTags autocmd FileType ruby ,eruby set omnifunc =rubycomplete#Complete autocmd FileType javascript set omnifunc =javascriptcomplete#CompleteJS autocmd FileType css set omnifunc =csscomplete#CompleteCSS autocmd FileType xml set omnifunc =xmlcomplete#CompleteTags autocmd FileType java set omnifunc =javacomplete#Complete "====================================================== |