Coder Social home page Coder Social logo

vim-simpledb's Introduction

vim-simpledb

Vim plugin to execute postgresql or mysql commands from VIM buffer

Installation

Pathogen

If you use git submodules, run this command from your .vim folder:

git submodule add https://github.com/ivalkeen/vim-simpledb bundle/simpledb

Otherwise, , run this command from your .vim folder:

git clone https://github.com/ivalkeen/vim-simpledb bundle/simpledb

Vundle

Add this line to your vimrc

Bundle 'ivalkeen/vim-simpledb'

Usage

Default key mapping for execution: <enter>.

  1. Create new file with .sql extension (without extensions, mapping would not work)

  2. Create first line with commented parameters:

    for psql:

    -- -h localhost -U postgres -d my_database

    or for mysql:

    -- db:mysql -D my_database -u root

    Note: if you don't want to enter password each time, you should create .pgpass (.my.cnf for mysql) file

    There is also usefull key -q to avoid messages like 'Timing is on' etc.

  3. Add sql statements to your file

  4. Hit <enter> to execute all not commented queries

  5. Hit <leader><enter> to execute all queries in the current paragraph

  6. Select multiple lines in visual mode and hit <enter> to execute just those queries

Configuration

If you do not want timings to be displayed, add this to your .vimrc:

let g:simpledb_show_timing = 0

If you want to customize the key mappings, set the variable simpledb_use_default_keybindings to 0 and add your own mappings in ~/.vimrc. For example, to execute a sql statement by pressing "ctrl-q" instead of "enter", add the following:

let g:simpledb_use_default_keybindings=0
vnoremap <buffer> <c-q> :SimpleDBExecuteSql<cr>
nnoremap <buffer> <c-q> m':SimpleDBExecuteSql <cr>g`'
nnoremap <buffer> <leader><c-q> m':'{,'}SimpleDBExecuteSql<cr>g`'

If you have any questions, mail me

TODO

  1. Rewrite code to match vim script conventions
  2. Intellisense

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Self-Promotion

If you like this project, please follow the repository on GitHub. Also, you might consider visiting my blog and following me on Twitter and Github.

vim-simpledb's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

vim-simpledb's Issues

Don't set filetype=sql indiscriminately

I noticed vim-simpledb does this in ftdetect/sql.vim:

" sql
au BufNewFile,BufRead *.sql set filetype=sql

" plpgsql
au BufNewFile,BufRead *.pgsql,*.plpgsql set filetype=pgsql.sql

The first part is a near direct copy of what $RUNTIME/filetype.vim does:

" SQL
au BufNewFile,BufRead *.sql         call s:SQL()

func! s:SQL()
  if exists("g:filetype_sql")
    exe "setf " . g:filetype_sql
  else
    setf sql
  endif
endfunc

So this introduces a redundant autocommand. Worse, it doesn't respect g:filetype_sql, which left me scratching my head for way too long.

It would be best to just remove the first two lines I think (and the other one too, IMHO). Failing that, respecting g:filetype_sql would be a "workable" second option.

Do not hardcode \timing on

Make it option for your plugin.

And also I recommend you to wrap such actions to:

\set QUIET on
...actions...
\set QUIET off

to get rid off unwanted messages ("timing enabled", "pager enabled", etc.)

execute fail

Not an editor command: select * from dvl_version;^@'| mysql -v -v -v -t -
D baseproject -u root -P 3316 -h 127.0.0.1 > /tmp/vim-simpledb-result.txt 2>&1

usage of ! anywhere in query causes errors

executing the sql query

SELECT 1 != 0; 

using simpledb results in the following error:

ERROR:  syntax error at or near "("
LINE 1: SELECT 1 (cat /tmp/vim-simpledb-error.txt >> /tmp/vim-simple...

which matches up with the line here: https://github.com/ivalkeen/vim-simpledb/blob/master/plugin/simpledb.vim#L44

I've seen similar errors when there is an exclamation point in a WHERE clause as well, but the provided query was the simplest/smallest reproduction of the bug.

Execute a paragraph without moving cursor

Earlier you would use this to execute the current paragraph of SQL:

:call simpledb#ExecuteSql("'{", "'}")

Now you changed that to this version that moves the cursor to the '{ mark a line above the paragraph.

:'{,'}SimpleDBExecuteSql

A small improvement would be to use this to put the cursor in the first line of the paragraph:

:'{+1,'}SimpleDBExecuteSql

But I would prefer the previous behavior where the cursor wasn't moved at all.

Could you make that possible again? Thank you!

Don't hardcode keybindings

Hey. Good plugin. One suggestion similar to #7.

There should be a configuration variable to prevent default keybindings. It can be enabled by default if you like.

Like this.

ftplugin/sql.vim:

if g:simpledb_use_default_keybindings
  vnoremap <buffer> <enter> :SimpleDBExecuteSql<cr>
  nnoremap <buffer> <enter> m':SimpleDBExecuteSql <cr>g`'
  nnoremap <buffer> <leader><enter> m':'{,'}SimpleDBExecuteSql<cr>g`'
endif

plugin/simpledb.vim:

if !exists('g:simpledb_use_default_keybindings')
  let g:simpledb_use_default_keybindings=1
endif

Then if you don't want those default keybindings to be bound you can edit your personal vim configuration:

let g:simpledb_use_default_keybindings=0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.